1.分析清楚你要面对的项目。
这是进行所有工作的第一步,如果你在这个地方都犯错了,
那么后续所做的一切努力都是白费。比如,你要完成图书管理系统,
那么你就应该明白这个系统主要是用于解决图书管理的问题。
2.考虑项目设计的方法。
在这个阶段,你要根据这个项目的特点考虑设计的工具和语言。
比如,对于图书管理系统,它需要封装性好,这样有利于管理和维护。
而这个系统开发周期较短,功能较简单。所以,根据其特点,
选择Java作为开发语言会是一个不错的选择。
3.收集完整的需求。
花时间整理清楚你的用户群的基本需求有哪些,而你的产品最终功能有哪些。
清晰的思维能够为你节省大量的时间。
4.编写全面的实施计划(或模型)。
对于小型独立的项目,这可能只是一个基本的流程图或一个简单的函数模型。
对于较大的项目,它有助于将工作分解成模块,并作如下考虑:
* 每个模块的功能是什么
* 模块之间的数据如何传递
* 每个模块如何调用这些数据
虽然收集需求和编写计划比起写代码来得枯燥,
甚至乐趣性比起花费几小时进行Bug调试还不如。但是,
花时间对程序的正确流程和结构进行预先计划却能确保后续的程序设计的高效率。
5.为代码添加注释。
在你认为需要为代码进行解释说明的地方添加注释。
最常见的注释会出现在函数说明,变量声明和返回值上,
它告诉人们这个东西有什么用处以及为什么会这么做。
6.采用统一的命名规则来为变量命名。
它将帮助你跟踪每种类型的变量,并弄清楚每种变量的代表的是什么。
比起简单的x = a + b * c,使用命名规则的命名的变量能够使代码更加易于维护和调试。
最常见的命名规则为匈牙利命名法,变量名的前缀包含了它的函数型。比如,
为整数变量命名的intRowCounter,以及为字符串型命名的strUserName。
不管你采用的命名规则是什么,你必须确保命名规则的一致性,
并且该规则能够对你的变量具有简单描述性。
7.对代码进行组织化编辑。
使用可视化的结构来表现代码结构。比如,
在条件语句(if,else)或者循环语句(for,while)的代码块进行代码缩进。
再比如,在变量和操作符中间加入空格。这样做能够使代码更直观优雅,
程序流程一目了然。
8.进行全面的测试。
首先,在每个模块中测试常见的数据值,看是否和预期结果一样;
再然后测试那些非常规的数据类型,用于排除隐藏的错误。测试是一门艺术,
你能够在实践中丰富自己的技巧和见地。编写的测试用例通常会包含以下几种情形:
极端值:包含极小值和超出预期的极大值,空字符串的文本值,
每个参数都为空的情形等。
无意义的值:假定用户会输入一些与输出要求无关的东西,看程序会对此有何反应。
不正确的值:比如把零作为除数,把负数作为平方根,
或者是在输入字符串的时候输入了一个数字。
9.实践,实践,再实践。
编程的工作是与时俱进的,你能够在实践中学到很多新的知识,
同时以前学过的旧知识也能够被重新温习。
10.减小需求改变的风险。
在现实的工作环境中,需求的变化一直是一个令人头痛但又不得不去面对的问题。
但是,假如你能够在项目开始阶段将需求和项目计划越发清楚地表现出来,
那么在后续因为沟通的误解或理解力不够而导致设计的结果与需求产生偏差的问题就会得到有效的改善。
所以,在项目设计的阶段,请在编写代码之前清楚的展示你的需求文档和工作说明:
系统需要什么东西,你正打算做什么,工作开展到了什么地步。
11.学会由简入繁。
假如你需要编程的东西很复杂,这样做能够帮助你更加顺利地开展工作。
例如,有这样一个项目,窗口上有一个任意形状的图形,
需要设计一个程序能够根据按住鼠标滑动的方向和速度而改变它的形状。
首先,你可以设计完成一个正方形在按住鼠标滑动而产生形变的情形。换句话说,
这一步主要是解决鼠标运动跟踪的问题。
接着,将这个正方形的大小与鼠标的速度相关联起来。换句话说,
这一步是解决鼠标速度与自身的形状的关联问题。
最后,创建你想要的实际形状,并把这三个组件连接在一起。
这种方法有助于模块化项目的代码编写,其中每个组件都有它自己的独立的块。
这对代码重用是非常有用的(例如你想使用鼠标跟踪新项目)
并使得程序更容易调试和维护。
这是进行所有工作的第一步,如果你在这个地方都犯错了,
那么后续所做的一切努力都是白费。比如,你要完成图书管理系统,
那么你就应该明白这个系统主要是用于解决图书管理的问题。
2.考虑项目设计的方法。
在这个阶段,你要根据这个项目的特点考虑设计的工具和语言。
比如,对于图书管理系统,它需要封装性好,这样有利于管理和维护。
而这个系统开发周期较短,功能较简单。所以,根据其特点,
选择Java作为开发语言会是一个不错的选择。
3.收集完整的需求。
花时间整理清楚你的用户群的基本需求有哪些,而你的产品最终功能有哪些。
清晰的思维能够为你节省大量的时间。
4.编写全面的实施计划(或模型)。
对于小型独立的项目,这可能只是一个基本的流程图或一个简单的函数模型。
对于较大的项目,它有助于将工作分解成模块,并作如下考虑:
* 每个模块的功能是什么
* 模块之间的数据如何传递
* 每个模块如何调用这些数据
虽然收集需求和编写计划比起写代码来得枯燥,
甚至乐趣性比起花费几小时进行Bug调试还不如。但是,
花时间对程序的正确流程和结构进行预先计划却能确保后续的程序设计的高效率。
5.为代码添加注释。
在你认为需要为代码进行解释说明的地方添加注释。
最常见的注释会出现在函数说明,变量声明和返回值上,
它告诉人们这个东西有什么用处以及为什么会这么做。
6.采用统一的命名规则来为变量命名。
它将帮助你跟踪每种类型的变量,并弄清楚每种变量的代表的是什么。
比起简单的x = a + b * c,使用命名规则的命名的变量能够使代码更加易于维护和调试。
最常见的命名规则为匈牙利命名法,变量名的前缀包含了它的函数型。比如,
为整数变量命名的intRowCounter,以及为字符串型命名的strUserName。
不管你采用的命名规则是什么,你必须确保命名规则的一致性,
并且该规则能够对你的变量具有简单描述性。
7.对代码进行组织化编辑。
使用可视化的结构来表现代码结构。比如,
在条件语句(if,else)或者循环语句(for,while)的代码块进行代码缩进。
再比如,在变量和操作符中间加入空格。这样做能够使代码更直观优雅,
程序流程一目了然。
8.进行全面的测试。
首先,在每个模块中测试常见的数据值,看是否和预期结果一样;
再然后测试那些非常规的数据类型,用于排除隐藏的错误。测试是一门艺术,
你能够在实践中丰富自己的技巧和见地。编写的测试用例通常会包含以下几种情形:
极端值:包含极小值和超出预期的极大值,空字符串的文本值,
每个参数都为空的情形等。
无意义的值:假定用户会输入一些与输出要求无关的东西,看程序会对此有何反应。
不正确的值:比如把零作为除数,把负数作为平方根,
或者是在输入字符串的时候输入了一个数字。
9.实践,实践,再实践。
编程的工作是与时俱进的,你能够在实践中学到很多新的知识,
同时以前学过的旧知识也能够被重新温习。
10.减小需求改变的风险。
在现实的工作环境中,需求的变化一直是一个令人头痛但又不得不去面对的问题。
但是,假如你能够在项目开始阶段将需求和项目计划越发清楚地表现出来,
那么在后续因为沟通的误解或理解力不够而导致设计的结果与需求产生偏差的问题就会得到有效的改善。
所以,在项目设计的阶段,请在编写代码之前清楚的展示你的需求文档和工作说明:
系统需要什么东西,你正打算做什么,工作开展到了什么地步。
11.学会由简入繁。
假如你需要编程的东西很复杂,这样做能够帮助你更加顺利地开展工作。
例如,有这样一个项目,窗口上有一个任意形状的图形,
需要设计一个程序能够根据按住鼠标滑动的方向和速度而改变它的形状。
首先,你可以设计完成一个正方形在按住鼠标滑动而产生形变的情形。换句话说,
这一步主要是解决鼠标运动跟踪的问题。
接着,将这个正方形的大小与鼠标的速度相关联起来。换句话说,
这一步是解决鼠标速度与自身的形状的关联问题。
最后,创建你想要的实际形状,并把这三个组件连接在一起。
这种方法有助于模块化项目的代码编写,其中每个组件都有它自己的独立的块。
这对代码重用是非常有用的(例如你想使用鼠标跟踪新项目)
并使得程序更容易调试和维护。