软件构造知识复习----可理解性编程

Posted jimmylearning

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件构造知识复习----可理解性编程相关的知识,希望对你有一定的参考价值。

  作为萌新,由于最开始是忽视了一些要求,导致现在带着复习来总结学习过的知识,如下便是关于可理解性编程的一些总结,主要是要从3个不同的方面进行剖析以及解释。

可理解性的基本规范

  无论是做什么,都需要有一定的规范作为指导,因此首先针对基础概念进行讨论。

  1.首先就是我们老生常谈的命名,我们在代码中离不开命名。然而,在编程的过程之中,我们很有可能忽视命名的重要性,因为我们很多时候认为算法,结构才是我们关注的重点。但是。。。。你经历过看不懂自己代码的恐惧吗(尤其是对于初学者),不规范的javadoc以及不明所以的变量命名都会让人头大,因此下面会针对这一个方面给出一点建议。

  (1).trade-off是必须的。

  因为虽然命名时名字越长,给出的信息越充足,然而名字长也会使得原本简单的程序看上去冗长,这同时也直接会导致程序低效。(害怕.jpg)

  (2).尽量避免同名变量的使用,虽然很方便。

  针对这点,我深有体会,虽然a,b,c这种变量真的很方便,但是当你的代码体量很大时,你就很难通过自己的变量明白该名称的意义,特别是针对不同的逻辑的变量使用相同的变量名时,更是会使得程序员自己在检查以及debug时碰到很大的问题。

  2.其次便是文档以及文件夹的组织问题,如果将自己创建的类随意地进行防治,A包中放置原本属于B包中的内容,B包中放置原本属于C包中的内容,这就会直接导自己在看文件结构时一脸懵逼,特别是当报错时,e.printstackTrace重重叠叠的跳转,会让人真的爆炸,因此,下面给出一点建议。

  (1).注意构思规划

  对号入座,每一个java的类,每一个包都应该负责一个特定的功能模块,只有把每一个类的功能想好,才能保证在创建类的时候能够较好地保证层次以及逻辑清晰

  (2).注意包名以及类名

  这又是涉及到命名了,如果较好地完成了命名,那么看层次时就会有一目了然的快感,无论是进行测试还是代码走查,都会很轻松地完成。

  伪代码

  伪代码作为表示代码思路的一个利器,当然也是需要一些规范的,否则就乱成一锅粥了。

  1.首先是基本的原则:  

    (1)每一个指令都是单独一行的
    (2)缩进以及关键字词都是用来强调和区分控制结构的
    (3)指令集合都只有一个入口以及一个出口
    (4)一堆的声明或者赋值被装到一个模块当中

 

  2.其次便是针对一些操作的表示,如果是随意选择表示意思的代词那么在进行交流的时候就会十分困难,因此这里给出了6条基本标准。

技术分享图片

  3.最后就是对上述的表达进行的一些描述以及解释:

    (1)Read 从文件中的记录读取数据作为输入
    (2)Get 从键盘获得输入
    (3)Print 输出到打印机中
    (4)Write 输出到文件中
    (5)Put,Output,Display均意指输出到屏幕上
    (6)Prompt需要有一个键盘输入,应为它是需要用户响应的
    (7)Compute,Calculate也就是简单的计算啦
    (8)Set 赋初值,<-以及=是后继赋值,store是将值进行保存
    (9)If-then-else,这是选择语句
    (10)最后就是类似于编程语言中的循环语句

Grasp和Solid

    提到代码的可理解性就不得不提到solid和grasp,上课的时候听得一脸懵,那么如今思考之后,发现了一些有意思的新东西。

  首先就是Solid:

  SOLID的解释为:1.Single responsibility principle,2.Open/closed principle,3.Liskov substitution principle,4.Interface segregation principle,5.Dependency inversion principle

  其实我认为针对这上面的任意一条都可以大书特书,但是我想要谈论的主要是DIP,DIP是SAP以及SDP共同组成的。SAP(The Stable Dependencies Principle)即稳定抽象原则,即如果一个类是稳定的,比如说我们的基类,就应该构造成抽象类,抽象类是最稳定的,而具体类的稳定性则是比抽象类差的。SAP(The Stable Abstraction Principle)则是被依赖的类需要比依赖其的类更加稳定。如此,两者共同组成了DIP(依赖倒置原则),如下图所示,我们应该避免圈的产生,从而使得结构更加明晰,更加好就行维护。

  技术分享图片

 

  接下来便是Grasp,关于grasp的解释为Information Expert,Creator,Controller,Low Coupling,High Cohesion,Polymorphism,Pure Fabrication,Indirection,Protected Variations。

  个人感觉grasp不如solid具体,更多的是设计的思想而不是规范。当然,其中最经典的莫不是高聚合,低耦合两兄弟了。高聚合,让程序的指向性更加明确,即为一个共同的目标而编写,而低耦合则是避免程序之间的互相调用,从而使得结构难以解析,到时debug困难!

 

 

   上面就是我的一些总结当然,我们在学习的时候应该努力践行上面的相关理论。希望所有的人代码不出错!

 

 

  

  

  

 

  













以上是关于软件构造知识复习----可理解性编程的主要内容,如果未能解决你的问题,请参考以下文章

关于软件构造最后一部份(PPT212)的复习

软件构造3

软件构造复习——7.1健壮性与正确性

软件构造 第五章第一节 可复用性的度量形态和外部观察

[软件构造]软件构造的质量指标作业

软件构造期末复习考点总结