上周六,公司请了一位架构师给我们研发的小伙伴做技术分享会,他分别从需求、系统设计、接口设计、代码开发、测试五个方面做了分享,听完他的分享,收获挺多的,下面将自己的收获总结如下,并对分享会内容做个简述,希望能对大家有所帮助。
他并非计算机专业出身,但真的是一位大佬,真的做到了将软件开发的全过程融会贯通,他曾将Windows的官方开发文档翻译成六百多页的A4纸,曾因要做一个财务结算模块而特地购买一本财务书籍通读并能背诵相关要点,他给我们分享了很多干货,但我记忆最深的是他说的一句话,他也以他亲身经历印证了这句话,
那就是:一辈子只做一件事一定是成功的。
个人总结:
1,代码走读对程序员的成长非常有效
2,熟悉IDE的每一个功能,因为IDE是你砍柴的刀
3,UML是一个利器,至少读一本经典的UML书籍
4,至少读一本经典的面向对象的书籍
5,一个方法应避免过长,60行最多了
6,Windows是一个很好的应用程序,无论是交互设计还是界面设计
7,数据表、类、前端数据应保持一致性
个人的感触最深的就是上面这几点,下面对分享会的内容做下简要概述。
一、需求
1,需求不能仅仅是简单的描述,必须想尽一切的可能性,特别是边界条件!
2,一定要穷究事物的关系(是一对一还是一对多?),这至关重要!
3,谁将使用这个系统,什么情景下使用,假设什么情况不支持,这些都需求的一部分。
二、系统设计
类设计
1,找名词、形容词,动词,动宾结构,这些将构成类、属性和方法;
2,一般地,类都有集合类,所有的Add,Edit, Delete等数据库操作方法都应是集合类的方法;
3,类的属性可以是集合类, Word的8层结构都通过集合类实现;
4,类就有2种,集合类及单个 对象类,所以代码模板完全可以实现80%的工作量
数据库设计
1,类—>表,属性 —>字段;
2,三个范式去检查,越规范越好写代码;
3,空间换时间,时间换时间来解决性能问题;
4,一般情况下不要写存储过程及触发器,逻辑和数据要各自独立;
5,要分类管理,要善于使用1对1的关系;
6,类的属性和字段的顺序要一致!
系统界面设计
在哪个操作系统上,就要符合这个操作系统的操作习惯和规范,对标这个操作系统以及一两个最大用户量的应用程序。
7大界面
1,登录界面;
2,主界面,以前叫MDI;
3,多个对象列表界面(单对象,两层对象);
4,单个对象对话框界面(单对象,两层对象;
5,选项界面;
6,向导式界面;
7,关于界面。
三、接口设计
接口的设计最好能遵循Restful Web API风格,接口可以抽象为3种。
1,集合接口:/users
2,单个对象接口:/users/{userID}
3,属性接口:/users/{userID}/password
四、代码开发
1,开发只是用高级语言把设计的内容翻译出来;
2,一个程序里80%的代码应该符合模板规范;
3,不要缩写,64位的机器,长点有啥不好!
4,变量一定要用名词和形容词(或过去分词),方法一定是动词或动宾结构;
5,方法的命名一定要涵盖整个方法里代码的实现;
6,业务逻辑的实施是层次地实现,而不是首尾连接实现;
7,要有洁癖,不要让后面的小屁孩总是用粗口问候你!
在高级语言里,不管多深奥的算法都可以认为是对象属性的变化集合!
五、测试
1,测试是为发现错误而执行程序的过程;
2,测试是最要求最高的岗位,要穷举一切边界条件证明程序是错的!
3,开发内部组织代码走读是初期最有效的测试方法。
六、总结
一致性是软件开发的最高境界!
面向对象是提高软件开发效率及质量的最佳途径!
做软件开发很简单,因为万物皆是对象!
做软件开发非常好,因为你可以凭着自己的努力快速超越别人!