第九章 伪代码编程过程
在创建类的过程中,我们按照以下步骤进行:
- 创建总体设计。
- 设计子程序。
- 复查并测试。
而在创建子程序时,则按照以下步骤进行:
- 设计子程序。
- 检查设计。
- 编写代码。
- 复查并测试。
在这个过程中,我们引入了伪代码的概念。伪代码是使用近似于英文的语句,以精确描述子程序中特定操作的一种方法。在编写伪代码时,可以忽略语法细节,专注于抽象层次,并可以忽略下一层次的实现细节。
伪代码的优点包括:
- 有利于审查和修改子程序设计。
- 支持迭代思想的实现。
- 减少注释量,因为伪代码本身可以充当注释。
设计子程序的具体过程如下:
- 检查前置条件。
- 定义需要解决的问题,包括需要隐藏的信息、输入输出、确保前置条件和后置条件的成立。
- 命名原则要符合之前提到的规范。
- 决定如何进行测试。
- 查看标准库是否有已有工具可用。
- 考虑错误处理。
- 在一些情况下需要关注效率。
- 选择合适的数据结构与算法。
- 编写伪代码。
- 复查伪代码,尝试几种设计,留下最佳的方案。
设计好子程序并编写良好的伪代码后,将代码实现变得更加容易。这包括声明函数,可能需要提前声明变量(如在C语言中),将每行伪代码转化为注释,并相应地填充代码。
如果代码较多,可以将伪代码中代码量较大的部分拆分为单独的子程序,或者使用递归编写伪代码,直到可以将其简化为实际代码。
在编写完代码后,需要进行代码检查:
- 进行自检或同行检查。
- 编译代码,提高编译器警告级别,使用类似lint的检查工具,并检查每一个error和warning。
- 逐行调试,找出并消除错误。
- 进行收尾工作,包括检查接口、设计的内聚性和防御性、变量命名的合理性、语句逻辑、布局、文档,以及去除冗余注释。
伪代码的替代方案包括测试先行的编程方式、重构、以及契约式设计,详见《程序员修炼之道》中的详细阐述。
第十章 变量
在变量的使用中,隐式声明可能引入错误。因此,我们应尽量避免隐式声明,并遵循良好的命名规则进行频繁检查。
变量的初始化策略包括:
- 在声明时进行初始化。
- 在第一次使用时初始化。
- 在类的构造函数中初始化成员变量。
- 使用final和const,根据需要。
- 特别注意计数器和累加器的初始化。
在选择变量的持续性时,需要注意减小"攻击窗口"。这意味着尽量使变量局部化,减小变量引用之间的跨度,以及减少变量的存活时间。理想情况下,变量的存活时间应该从第一次引用到最后一次引用。
减小变量作用域的一般原则包括:
- 循环变量应在循环开始时定义。
- 将相关联的代码放在一起,可以将其抽出为一个子程序。
- 采用最严格的可见性,根据需要进行拓展。
在变量的使用中,注意绑定时间。晚绑定时间可以在编写时绑定(硬编码)不灵活、难拓展的情况下更为灵活,晚绑定时间可以在编译时、加载时、对象实例化时或调用函数时进行。
数据结构和处理数据的控制结构应该相互对应。变量的命名应该完全、准确地反映变量指代的事物,避免使用无意义的变量名。变量名的长度最好在10~16个字符之间。
第十一章 变量名的力量
变量名应该准确地表示变量指代的事物,避免使用无意义的变量名。要避免使用类似x、xx、xxx一类的无意义变量名,以及像dat、tmp一类泛泛的变量名。
变量名的长度最好在10~16个字符之间,8~20个字符也可以接受。
变量名与作用域的关系需要注意。短变量名,如i、tmp,通常用作临时变量。虽然短变量名存在一定的风险,但有些情况下它们仍然是合适的。无论如何,短变量名暗示了变量的局部作用。
在编写代码时,变量名的力量在于准确表达其指代的内容。因此,我们应该坚持使用有意义的、准确的变量名,避免过于泛泛或无意义的命名。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用