函数设计应做到低耦合,高内聚

        最近,同项目组的一位师姐请产假了,由我接手她之前的部分版本的开发工作。在开发的过程中,我阅读了某个很古老的版本的程序代码,心生感触,想在这里啰嗦几句。

        该版本中很多函数的调用关系都错综复杂,让人读起来非常的费劲。我用如下的图来形象化地表示这种函数之间的调用关系。

        箭头的指向为调用关系,如“函数A”调用了“函数B”、“函数C”、“函数D”、“函数E”、“函数F”,以此类推。

        当函数之间的调用关系太多时,各个函数就组成了一个复杂的调用网络,很难将它们之间的关系理清楚。

        那么,为什么会出现这么“糟糕”的函数设计呢?原因有以下几点:

        第一,最原始版本的开发人员没有做好详细设计,程序是想到哪里就写到哪里。最原始版本犹如一座大楼的地基,地基没有打好,当然后续的工作就没那么顺利了。此外,后续的开发人员总喜欢拿之前开发人员的程序作为参照,“不好”的前辈只会教出更为“不好”的“徒弟”。

        第二,项目组为了赶进度,只要求程序能够实现基本功能,并没有对代码进行严格的同行评审。“赶进度”只会产生糟糕的代码,而如果代码只是一个人说了算,那肯定会留下很多的问题。

        第三,在程序演进的过程中,不同的开发人员对同一个版本的代码进行了修改。如果每个人都对一个版本的程序进行修改,由于大家编写代码的习惯都不尽相同,因此会使得程序“越改越差”。

        那么,优秀的程序有什么样的要求呢?要求之一就是:函数设计应做到低耦合,高内聚。也就是说,在不增加代码复杂度的情况下,尽量减少函数之间的调用关系,在本函数实现规定的功能。

        “低耦合,高内聚”的函数设计有什么好处呢?好处有以下几点:

        第一,便于对程序进行维护。这点很重要,特别是刚入职的员工,如果他们阅读到了逻辑清晰、编程规范的代码,真的是一种福气。

        第二,便于程序版本的演进。有了好的“榜样”,之后对程序的增删改的工作都更加的容易了。

        第三,便于不同项目组或产品线之间的沟通交流。优秀的代码应该拿出来,供大家一起学习。“他山之石,可以攻玉”,只有不断地学习别人好的、成功的经验,自己的能力才能够得到提升。

  

        当然,好的函数设计方法也不是一朝一夕就能够掌握的,只要我们坚持学习、不断总结,相信定然会写出优美的、易于阅读和理解的程序来的。

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

 

时间: 2024-08-20 00:20:41

函数设计应做到低耦合,高内聚的相关文章

对高内聚,低耦合的理解

内聚:一个模块内各个元素彼此结合的紧密程度 耦合:一个软件结构内不同模块之间互连程度的度量     (一)这是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低.         高内聚:类与类之间的关系而定.高,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运行起来就会出问题.一个类的运行影响到其他的类.     低耦合:类内部的方法而言.把程序的功能尽量分散,别在一个类里只写一个或很好的方法,因为那样会给你的调试等带来很多问题.出了错你都不知道在什么

框架节构设计(高内聚低耦合)

内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事.它描述的是模块内的功能联系: 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度.进入或访问一个模块的点以及通过接口的数据. 定义 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低.  概念 内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高. 所谓高内聚是指一个软件模块是由相关性很强的

连载:面向对象葵花宝典:思想、技巧与实践(29) - 高内聚低耦合

高内聚低耦合,可以说是每个程序猿,甚至是编过程序,或者仅仅只是在大学里面学过计算机,都知道的一个简单的设计原则. 虽然如此流行和人所众知,但其实真正理解的人并不多,很多时候都是人云亦云. =============================================================== 要想真正理解"高内聚低耦合",需要回答两个问题: 1)为什么要高内聚低耦合? 2)高内聚低耦合是否意味内聚越高越好,耦合越低越好?   第一个问题:为什么要高内聚低耦合? 经

大型项目架构搭建_高内聚、低耦合(1)

软件开发中的项目的架构的终极目标就六个字: 高内聚.低耦合: 架构搭建好了,后期可维护性才能提高,在这基础上,如果还想提高项目的高效性,就只能从算法着手 如果项目中算法都已经做到极致了,还想提高项目的高效性,怎么办?(算法并不一定能处理高并发的问题) 就要用到中间件的技术了 下面我就从这三方面来搭建一个项目 假设我们有个这么需求 我公式和YC公式合作,开发一个项目,这个项目功能是用来测量东西的一个项目,我们公式在存储数据方面做得好,YC公司所以要和我们合作,要我们做一个对数据进行保存的容器,他们

[讨论]请用一个词来形容 高内聚,低耦合

问题描述 如果说原来没有采用低耦合的代码可以形容为[牵一发而动全身],多么的不好,那么高内聚该如何用一词形象的形容 解决方案 解决方案二:哎解决方案三:藕断丝连解决方案四:耦合到底是什么意思啊???解决方案五:高内聚,本人认为就是代码简洁...

【高质量代码】如何写出更高质量的C/C++代码(2):函数设计

函数是组成C/C++程序的基本元素,是将一段执行某项功能的代码进行了封装的代码段.为了实现设计的功能,函数的功能正确性是首要的前提,但是仅仅是正确还不够,其设计的科学性和合理性也是影响函数使用的重要因素.本文简要讨论C/C++函数设计和实现的一些基本规则. 1.引言: 每一个完整的C/C++函数都至少包含三个部分:返回值.函数名和参数.函数参数和返回值承担了调用者与被调用函数之间数据传递的功能,主要方式有三种:值传递.指针传递和引用传递,前两者为C标准,引用传递为C++标准.其中引用传递的性质类

高质量C++/C编程指南-第6章-函数设计(1)

函数是C++/C程序的基本功能单元,其重要性不言而喻.函数设计的细微缺点很容易导致该函数被错用,所以光使函数的功能正确是不够的.本章重点论述函数的接口设计和内部实现的一些规则. 函数接口的两个要素是参数和返回值.C语言中,函数的参数和返回值的传递方式有两种:值传递(pass by value)和指针传递(pass by pointer).C++ 语言中多了引用传递(pass by reference).由于引用传递的性质象指针传递,而使用方式却象值传递,初学者常常迷惑不解,容易引起混乱,请先阅读

《OOD启思录》—第2章2.3节 类耦合与内聚

2.3 类耦合与内聚OOD启思录一些经验原则用于解决类的耦合与内聚问题.我们努力让类更紧密地内聚,并尽量降低类间耦合程度.这和在面向动作范型中试图让函数更紧密地内聚并尽量降低函数间的耦合程度的努力是一致的.函数中的紧密内聚意味着组成函数的所有代码都是紧密相关的.函数间的松耦合意味着当一个函数想要使用另一个函数时,它应当在总是从同一点进入该函数,并从同一点退出.这样,我们就可以得出这样的面向动作的经验原则:"函数应当只有一条返回语句." 在面向对象范型中,我们把松耦合和紧内聚的目标映射到

移动APP设计研究:手势设计应遵循的原则

文章描述:浅谈移动终端使用之手势操作的设计及研究. 手势是指人类用语言中枢建立起来的一套用手掌和手指位置.形状的特定语言系统. 手持设备中的手势是指,将一系列多点触摸事件综合成为一个单独的事件. 手势操作的优势 1. 直觉化--好的手势设计源于生活经验,易于理解,学习成本低. 2. 快捷高效--减少操作步骤,加快完成任务. 手势在平台上的异同 各平台上手势现状 通用手势能被广泛应用是源于对心理模型的匹配,以及大众对于先入为主的接受度. 基本通用的或其他的手势可发展, 需要遵循设计原则,需要注意的