写在前面:
从实际出发,思考现实中会面对的用户和用户需要的功能,分点去想,到实际上更可能需要前期调研,通过数据来分析和设计一个真正的项目需要的东西。
以图书管理系统为例:
-
用户
1.老师 2.学生 -
功能 :
老师:1.书上架。2.查阅书籍。3.查阅借阅记录。(先不考虑老 师借书的情况)
学生:1.借书。2.还书。3.查阅书籍。4.查阅借阅记录。 -
抽象出类(实体类)
书籍类:
1.ISBN(书编号)2.书名 3.作者 4.价格 5.书数量(总数/余数) 6.借阅次数
学生:
1.姓名 2.学号 3.借书状态 4.男女
老师:
1.姓名 2.工号
用户(可以让学生和老师继承此类):
1.姓名 2.ID
借阅记录:
1.书名 2.ISBN 3.学号 -
抽象出类(存放类)
书架(存书)
用户档案(存用户信息)
借阅记录档案(存借阅记录) -
从需求来推理流程
1.登录
2.从登录信息来给出不同的界面(老师/学生)
3.通过用户选择执行不同操作(上架/借书/还书/浏览记录等)
项目程序实现总结:
方法的细节划分
- 对于项目中的各个类来说,让其各司其职,把其中的方法分的更明确,更细节一些,对于以后代码的重复使用和改变需求的维护会更加简单。如:对于借书来说,应该是一个行为,我把他分配到行为(action)类中来实现,但是其中需要搜索书籍,我更愿意把这个方法封装到书架(bookshelf)类中来实现,再到搜索中比较是否是这本书这个语句,我觉得更应该分配到书籍(book)类中完成。
写代码前的思考
- 项目不同于以往的片段代码,在调用方法或者使用属性之前应该思考清楚自己的目的,实际上对于更为庞大的项目可能需要一个项目详细说明书来帮助每一步的实现。
变量的命名
- 变量的命名应该具有一致性和描述性,比起简单的 x,y,z,使用更为规则的命名可以让代码变得更加容易维护,最常见的命名规则为匈牙利命名法,变量名的前缀包含了它的函数型。比如,为整数变量命名的intRowCounter,以及为字符串型命名的strUserName。
书写注释
- 不管代码写的多好,一定要给代码加上必要的注释,告诉别人(更可能使自己)这段代码是什么目的以及为何这么做。