关于耦合度的一点反思

在编程过程当中,我时常会感到自己的代码存在问题,却又说不上究竟是什么。最近在读《代码大全》,读到代码耦合度的部分,发现里面提到的一些问题,正是自己隐隐约约觉得自己的代码有缺陷的地方。我打算结合书中的内容,重新审视下自己的代码中的不足之处,并且记录下来。

高能预警:下面的文字中会包含可能引起读者不适的内容。对于有代码洁癖的读者,这种不适感会极为强烈,请不要继续阅读;未成年人请在家长的陪同下观看。

The most insidious kind of coupling occurs when one module makes use not of some syntactic element of another module but of some semantic knowledge of another module’s inner workings. Here are some examples:

  • Module1 passes a control flag to Module2 that tells Module2 what to do. This approach requires Module1 to make assumptions about the internal workings of Module2, namely what Module2 is going to do with the control flag. If Module2 defines a specific data type for the control flag (enumerated type or object), this usage is probably OK.

——Chapter 5: Design in Construction

这段话使我想起了自己的一个接口设计。需求是这样的:根据当前对某项业务的操作,取得该业务的一些属性,并返回与状态相关的提示文本。

我的解决方案是,设计一个文本表用来存放提示文本:


字段名


类型


是否为主键


描述


Transaction


CHAR4



表示业务类型的代码


Status


固定值N或U或C



表示现有的3种业务状态


Text


CHAR255



需要输出的文本

在接口ZMKT_GET_MSG中指定业务唯一标识、状态码:


输入参数


GUID


全球唯一标识符


Status


表示现有的3种业务状态


输出参数


Text


与状态相关的提示文本


Attributes


查询到的业务属性

现在看来,这种设计是存在问题的。因为调用者必须了解Status的值的意义才能使用它。需要把这种信息隐藏起来,在内部处理。

还有一个我犯过的错误:

  • Module2 uses global data after the global data has been modified by Module1. This approach requires Module2 to assume that Module1 has modified the data in the ways Module2 needs it to be modified, and that Module1 has been called at the right time.

在ABAP代码中,这似乎是一种常见现象。一个report中会有很多子程序使用using或changing关键字来对全局数据进行引用传递,并且进行修改操作。当程序规模较小的时候,这种情况还可以接受。但程序规模较大的情况下,应该警惕在这种情况下可能产生的问题。特别是,如果一个程序中包含着不同来源的代码时,如果不能有效地隔离数据,这些代码很容易因为微小的改动造成连锁影响,比如在某些增强代码中。

时间: 2024-07-29 22:03:54

关于耦合度的一点反思的相关文章

一点反思

这几天真是有点找不到自己了.每天过的很盲目,一点方向感都没有,也没有动力了.不知道自己该做些什么. 虽然也是一直在做事,但是感觉做事并没有什么效果.总是在盲目的去做一些事情,没有目标,没有动力,实力和目标差距太大. 还有现实的一些打击也是让我有点找不到自信了.感觉大学怎么越过越堕落了呢.这几天复习也是这样.看别人都在紧张的复习当中,我却一点也看不进去书,看一会就不想看了. 总是想找点其他的事情做,总是给自己找借口,总是不能安心下来认认真真做一件事.也明白这样不好,老是这样下去的话,最后肯定一事无

【转】Android应用开发allowBackup敏感信息泄露的一点反思

转载:http://blog.csdn.net/yanbober/article/details/46417531 1 背景 其实这篇文章可能有些小题大作,但回过头想想还是很有必要的,有点阴沟里翻船的感觉.相信大家都知道Android API Level 8开始提供了为应用程序备份和恢复数据的功能,此功能的开关可以通过应用程序中AndroidManifest.xml文件的allowBackup属性值进行配置,默认是True,所以用户可以对我们应用程序进行数据备份.相信很多人都和我一样一直当作耳边

Android应用开发allowBackup敏感信息泄露的一点反思

1 背景 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重劳动成果] 其实这篇文章可能有些小题大作,但回过头想想还是很有必要的,有点阴沟里翻船的感觉.相信大家都知道Android API Level 8开始提供了为应用程序备份和恢复数据的功能,此功能的开关可以通过应用程序中AndroidManifest.xml文件的allowBackup属性值进行配置,默认是True,所以用户可以对我们应用程序进行数据备份.相信很多人都和我一样一直当作耳边风过了一下

近期的一点反思

这两天总有一种急迫感.紧迫感! 真的不能再像以前那样浑浑噩噩过日子了!真的.那样子继续下去的.你只能越来越平庸! 费了九牛二虎之力.各种险象环生才换来一个计算机的硕士研究生.但这远远不是结束啊!这仅仅是一个开始而已! 怎么就能沾沾自喜了呢?怎么不好好珍惜呢! 想想和同龄人的差距吧! 想想自己有哪一点拿得出手的东西呢?精通哪门语言吗?对算法熟悉吗?工具会用吗?..................... 所以,要努力啊!要比考研的时候更加的努力!!要珍惜时间!要快速学习!不要过了三年以后还是什么都不

勿在浮沙筑高台-- 关于IT技术学习的一点反思

常常看到前辈们大牛们感慨, 感慨我们这一代人生活在最好的时代, 拥有海量的学习资源以及指数增长的新技术与新知识. 的确, 如果你是这个时代的大学生,或是初出茅庐的程序员, 你会发现有太多太多的选择, 甚至是穷尽一生都看不完的资料,书籍, 文档..... 但是, 作为一个亲历者,这样的环境真的是最适合程序员成长吗? 选择虽然多了,却导致许多人迷失了方向,忽视了基础知识技术的关键性.正如刘未鹏在<暗时间>里面所提到的, 对于程序员来说,如何区分本质和非本质的知识 是极为关键的. 学习了许多看似”高

来自大数据的反思:需要你读懂的10个小故事

摘要:随着各种技术发展,很多人都在吹捧大数据.然而如同股市一样,越是高涨,越是需要警醒,在大数据热火朝天前行的路上,多一点反思,多一份冷静,或许能让这路走的更好.更远.本文的10个小故事,或许能让你有所得. 自2011年以来,大数据旋风以"迅雷不及掩耳之势"席卷中国.毋庸置疑,大数据已然成为继云计算.物联网之后新一轮的技术变革热潮,不仅是信息领域,经济.政治.社会等诸多领域都"磨刀霍霍"向大数据,准备在其中逐得一席之地. 中国工程院李国杰院士更是把大数据提升到战略的

阶乘之和

[题目描述]用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. [输入格式]一个正整数N. [输出格式]一个正整数S,表示计算结果. 思路:高精乘加高精加 program aa; var n,l,ls,i:longint; a:array[1..1000]of longint; s:array[1..1000]of longint;//s数组里是下一个要加的数,是变化的. procedure jc(i:longint);//这个过程是用

盘子序列

盘子序列  [题目描述]  有 n 个盘子.盘子被生产出来后,被按照某种顺序摞在一起.初始盘堆中如果一  个盘子比所有它上面的盘子都大,那么它是安全的,否则它是危险的.称初始盘堆为  A,另外有一个开始为空的盘堆 B.为了掩盖失误,生产商会对盘子序列做一些“处  理”,每次进行以下操作中的一个:(1)将 A 最上面的盘子放到 B 最上面:(2)将 B 最上  面的盘子给你.在得到所有 n 个盘子之后,你需要判断初始盘堆里是否有危险的盘子.  [输入格式]  输入文件包含多组数据(不超过 10 组

IT痴汉的工作现状20-职业规划

小伟兄的经历 在第16篇文章中小伟兄弟我给大家介绍了常见的技术类职业发展通道,这其实就是一种职业规划.由于我连自己都还没管好自己,所以我就不想着转管理岗位了,不适合我.我是一个不爱受人管也不爱管别人的人,嗯,这就是我. 世间的事从来就没有那么简单,人生处处都存在着偶然与不确定性.这,也就是生命之所以精彩的一个原因.毕竟我们谁都不喜欢从出生开始就完全按照固定的剧本去演绎自己的一生.每个人都喜欢充满未知与希望的旅程,这是人生魅力之所在.我们希望成为自己命运的掌舵者,人生旅途的设计师,职业生涯的规划者