分享
 
 
 

C++ Coding Standards Item 5 : Give One entity one cohesive responsibility

王朝c/c++·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

http://spaces.msn.com/members/spiritauding/Blog/cns!1psm74keJLzaQ6CnZ_EB1mAw!120.entry

C++ Coding Standards Item 5 : Give One entity one cohesive responsibility

Summary

Focus on one thing at a time: Prefer to give each entity (variable, class, function, namespace, module, library) one well-defined responsibility. As an entity grows, its scope of responsibility naturally increases, but its responsibility should not diverge.

同一时间只关注一件事情:最好给每一个实体(variable, class, function, namespace, module, library)一个明确的职责。当实体增长(扩展,怎么翻译好一点?)的时候,它的职责范围自然的扩大了,但是它的职责不应该有不同的发展方向。

Discussion

A good business idea, they say, can be explained in one sentence. Similarly, each program entity should have one clear purpose.

一个好的商业计划可以用一句话说明。类似的,一个好的程序实体应该有一个清楚地目的。

这条规则主要讲有很多功能(职责)的实体,它们通常很难设计,用起来也很困难,所以,还是让我们的实体(class,function……)目的单一些,单纯一点好。

Prefer to build higher-level abstractions from smaller lower-level abstractions. Avoid collecting several low-level abstractions into a larger low-level conglomerate. Implementing a complex behavior out of several simple ones is easier than the reverse.

最好在比较小的低级别的抽象基础上建立高级别的抽象。避免把许多小的低级别抽象聚合到一个大的低级别的抽象中。相对而言,通过几个简单的实体实现一个复杂的行为,要比通过一个实体来实现简单的多。(这句话好难讲!!)

Examples

Example 1: realloc. In Standard C, realloc is an infamous example of bad design. It has to do too many things: allocate memory if passed NULL, free it if passed a zero size, reallocate it in place if it can, or move memory around if it cannot. It is not easily extensible. It is widely viewed as a shortsighted design failure.

Example 1 讲的是标准C语言中的realloc函数,realloc必须要做太多的事情了:传入NULL的话就分配内存,传入0值得话就释放内存,如果在那个地方(程序执行点)可以realloc的话,就正常的工作,否则就要做内存移动……。而且不能很容易的扩展。基本上都认为它(realloc)的设计是很失败的。

Example 2: basic_string. In Standard C++, std::basic_string is an equally infamous example of monolithic class design. Too many "nice-to-have" features were added to a bloated class that tries to be a container but isn't quite, is undecided on iteration vs. indexing, and gratuitously duplicates many standard algorithms while leaving little space for extensibility. (See Item 44's Example.)

Example 2:basic_string.又一个在单一功能的类的设计中的反面例子,它的“罪过”我就不逐句翻译了,大家读原文也能清楚。

这章讲述的内容比较简单,以前我总是注意不到,或者说在刻意的违反,总是希望一个类可以做这个也可以做那个,呵呵,记得我曾经把几个功能函数全部写在一个 CPP文件中,无论从程序设计角度还是文学欣赏的角度看,那个文件都极度的不具备可读性,所以它也从我的历史中永久的消失了……

Copy Left (C) Scorpio Auding

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有