代码大全-如何建立一个高质量的子程序

不积硅步,无以至千里;不积小流,无以成江海。大型的项目是由一个个小模块构建而成。每一个小模块里面又包含着许多子程序。如果每一个子程序都能做到高质量,那么整个项目代码的质量必然很高。🤔

建立一个子程序的步骤

《代码大全》这本书将设计程序列为首要步骤。该步骤在我看来就像是为这个程序赋予特别的意义。整个过程就好像捏泥人,你要去决定他的性别是男是女,头发是卷是直,个子是高是矮等。设计程序的第一步是要求设计者想清楚三个问题。第一该程序要解决什么问题。第二我为什么要设计该程序,设计出该程序带来什么样的好处。第三我该如何设计出一个健壮的、优秀的程序。不难看出,这两个问题都是设计者对自己的一个提问,是为了让设计者明确这个程序的必要性价值和意义。只有前两个问题想通了,才能着手去思考如何设计的问题。

设计并实现一个程序需要考虑哪些步骤?

  • 合适的命名。一个优秀的命名是对程序功能的高度概括。
  • 考虑程序所需的效率。设计程序需要考虑它的运行环境。比如环境对程序执行时间有着高要求,那么考虑一个时间复杂度较小的算法或高效的数据结构是必要的。
  • 考虑合适的算法和数据结构。根据第2条选择合适的算法和数据结构。
  • 编写详细的PDL。
  • 检查PDL。
  • 编码实现PDL。
  • 检查程序编码
  • 纠错并修改
  • 按需重复...

编写PDL到底带来了多大的便利性?

PDL在我看来就是注释,用自然语言描述整个程序的设计过程。编写一个清晰的PDL有以下几个好处:第一方便review。reviewer应该更希望看到你的设计思路,而不是硬看代码,尤其是没有注释的代码,真的让人抓狂。第二方便修改。一旦发现考虑不周的地方,就可以直接用自然语言修改,这样效率更快。第三方便编程。一份精确无误的PDL会为接下来的编程实现提供一个完整的思路,因为PDL本身就是注释,我们仅需要根据注释,填充正确的代码即可。

为什么要花费大量时间在高层次的设计上,而花费少量时间在Coding?

有时候“慢即是快”,将每一步走稳,才能走的远。

花费大量的时间在高层次的设计上会帮助我们明确自己的设计目标,设计思路。拥有一个清晰、明确的设计思路太重要了。尤其是编写PDL、检查PDL、细化PDL步骤,会让我们对自己设计的子程序有一个清晰透彻的理解,如此,之后的编码实现也会更加的准确。

如果上来直接Coding,大概率会返工。一遍遍的将大量的时间花费在调试代码,修改代码步骤上。

一个有效的、富有表达力的PDL该如何描述?

  • 一定是自然语言描述,不要用编程语言描述。你用自然语言描述,实现者看懂思路后,可以用任意语言实现子程序。
  • 要详细且精确。因为PDL未来是要用来程序语言编码的基础,PDL写的越清楚,实现出来的子程序就越准确。建议是在描写一个PDL之前,先用自然语言精确描述子程序的作用,然后再编写关于这个子程序的高层次的PDL。

热门相关:骑士归来   重生之至尊千金   战神   名门天后:重生国民千金   战神