成为软件工程师的十点建议

1、代码大全,语言平实,简单易懂,讲究先期准备,谋而后定,降低开发过程中需求和设计的改变等等,软件工程师必看。

2、开发中需求改变不可避免,必须让设计预留改变空间,框架结构不能死板不可变,必须支持可拓展。例:Album缓存部分,异步图片加载部分

3、任何开发必须有文档,必须有用例和类图,没有用例和类图就和盖房子没有设计图一样。任何一个软件和模块开始之前工程师必须有直观的思路和方案,然后才会有比较靠谱的进度安排。完备的设计可以让写代码跟完成填空题一样简单。

4、23模式不是写代码过程中要考虑,而应该在详细设计时考虑,从抽象角度先抽象出各种相似模块,a)是否可具备相同父类,是否存在同级关系,是否可支持同级拓展,b)该使用什么创建行模式(工厂模式,抽象工厂模式,单例模式,建造者模式,原型模式),c)数据源是否是多数据源,是否要用适配器模式,是否要将所有动态数据用统一类来处理,d)如果需求改变是否可用装饰器模式来修补,e)涉及关键类关键代码是否需要用代理模式来隔绝直接访问(例如ActivityManager和ActivityManagerService),f)是否可使用外观模式去从小模块中抽象出较大模块(银行办理业务案例),g)该解耦的解耦,多参照桥接模式(公路行车例子),高内聚低耦合能让后期维护与拓展速度变得不可思议,,也可更好的适应桌面开发需求多变的情况,h)行为型模式多注重接口,抽象类和反射的使用,围绕可复用可拓展灵活多变的思路就能慢慢写出经典的代码,即使自己都不知道是什么模式。

5、从面向对象角度来讲,一切事物皆为对象,只要是现实存在的物体就一定会有抽象类(Java有基类Object)(任何软件都是为现实服务,所以任何软件中出现的对象都应是现实存在的对象,如果不是那就不符合面向对象),软件工程师必须时刻牢记面向对象的概念,因为它基本贯彻整个软件生命周期。

6、高内聚低耦合不但表现在对象关系上,还表现在代码实现上,使用代码组合模式如搭积木一样组装代码是低耦合的最高境界,这要求任何一个方法都有自己明确且单一的功能,然后应用外观模式可以组合成任何大模块,大模块直接亦可再次组合,映射在建筑概念上就是钢筋混凝土可以组成横梁,不锈钢铝材可以组成门窗等等。如果程序是这样设计并实现,那么复用性,可拓展性将会相当高,维护时间和成本也将大大降低。这也是软件工程师区别于coder的地方。

7、除了详细设计外,设计者还需提取软件框架,框架在百度百科上的描述:框架是整个或部分系统的可重用设计,表现为一组抽象构建及构件实例交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面后者是从目的方面给出的定义。殊途同归,最终目的还是可复用与可拓展。如何去抽象并定义骨架,这需要从软件需求与功能上去寻找,例如很常见的异步图片加载框架,比如异步线程调用框架,再比如利用反射与回调实现的界面跳转框架,大部分软件都会用到,直接复制过来即可使用,而且用的很好。具体针对性的框架要针对具体软件,比如launcher的页面切换框架。

8、java分包,大部分人按照类的用处来分包,造成打开一个project只能看到view,controller等等,launcher也一样,完全不能从包看出什么东西来。如果分包是按照功能模块来,那么从包名就能看出这个project具有哪些功能,哪个模块出问题了可以立即定位到该位置,虽然不可避免的会出现更多包,以及更多相同名称的子包例如controller,view(每个功能模块都有这些包),但是对java来说更多的包意味着更多的类,意味着清晰的功能,同时也意味着低耦合,不用担心创建的类太多导致效率低下的问题,与其担心这点消耗还不如多优化几个算法。

9、MVC编码模式,molder+view+controller,对于Android来说其实已经实现了MVC,xml对应view,activity对应controller,但是对于activity来说,这个controller管的有点略多,因此必须对他重新定位,再次使用MVC模式,activity可以包括view的创建,初始化,view的更新等功能,而逻辑,数据的采集与获取等等非view相关的操作放在controller中去实现,避免复杂难理解长到无以复加的activity类。其实,不管是什么类,如果超过1000行,那么这个类肯定存在可复用的部分或者可拆分,同样,一个方法不能超过100行。

10、注意身体锻炼,保护眼睛,摆对坐姿。

好像有头大象在吸水。然后再去了芦笛岩,

成为软件工程师的十点建议

相关文章:

你感兴趣的文章:

标签云: