在真正构建之前,需要进行一些决策,首先是要选择语言,这貌似是一个难题,而且很有争议,其实对于具体程序员来说却不是一个问题,你几乎没啥选择权,老 板让你用啥你就用啥吧,对新手来说,你会什么就找什么样的工作就是了,对于老手来说,公司要决定换一种语言开发,你就学习学习,换呗,难道你还换个工作? 如果你的职位需要你对编程语言做出选择,每种语言都是有他自己的优势和适用范围,我想应该不会有人用javascript写驱动程序,用汇编语言做网页 吧。当然除了个人喜好和信仰外,对语言的选择还需要考虑员工的熟悉程度,是否容易招到人等因素。
语言确定下来后,要有一套编程规范,以指导团队的编码过程。比如类,方法,变量的命名规则,缩进风格,数据库,表,字段的命名规则,是否强制使用参数化查询等,有了一套CodingGuidline后,会让团队的编码更规范统一,对接下来的编码和项目维护很有帮助。
明确你在技术浪潮中的位置,要深入一门语言去编程,而不是限制在一门语言上去编程。这一节是说在软件发展的前期阶段,编译器,开发工具,周边辅助系统都 很原始,且有BUG,编程的参考文档也不全面,程序员需要为这些问题花费很多时间,而现在大多数语言,工具都已成熟,程序员可以更专注于实现软件本身的功 能,如果你用的这门语言有一些限制,或者少一些你需要的特性,不要受制于它,而是想办法利用一些约定或者自己开发一些类库来支持你的需求。
一个理想的设计的特征是怎样的呢? 他们有一些共同的特征,这里罗列里一些,虽然都是一个一个的点,但你可以以此针对你做出的设计一一对照一下。
1)最小的复杂度:你的设计得很容易看懂,很清晰明了,而不是自作聪明的用一些高深的东西。
2)易于维护:你的设计是自说明的,一目了然的,不需要太多的解释,让别人看到你的设计后很少会问你一些问题。
3)松散耦合:模块间的关联很少,这样可以减少集成,测试和维护的工作量,应用合理的抽象,封装,信息隐藏等做到松散耦合。
4)可扩展性:你的设计不是死的,在不大动底层结构的情况下,可以增加一些有可能增加的功能。
5)可重用性:如果做出一个通用模块,就可以在其它项目里重用了。
6)高扇入:第一次听这个词,就是一些少数的底层的工具类,会被上层大量的类使用。
7)低扇出:一个类使用其它类的数量尽量少,如果多的话,这个类就会很复杂。
8)可移植性:尽量避免用特定平台,特定语言的特性来进行设计,当然这个看具体情况。
9)精简型:不做过度设计,对一些很少可能出现的情况进行设计。
10)层次性:好的设计一般是分层的,可以从每个层次去观察系统,而不用知道下一层的详细,可能理解起来比较难,我觉得大概就是高层类和低层类的意思吧, 底层类就类似基础组件,高层类就是调用底层类实现业务逻辑,高层类设计的时候只要知道底层类提供什么功能就行了,不必知道底层类的细节。
11)标准技术:尽量使用标准的,大家熟悉的技术。
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)