专栏首页C++核心准则原文翻译C++核心准则C.1:组织相关数据形成结构体或者类

C++核心准则C.1:组织相关数据形成结构体或者类

C.1:组织相关数据形成结构体或者类

Reason(原因)

Ease of comprehension. If data is related (for fundamental reasons), that fact should be reflected in code.

降低理解难度。如果数据(由于根本的原因)具有相关性,那么这个事实应该反映到代码上。

译者注:面向对象的软件设计首先是要对实现的目标系统建模。在目标系统中是一个整体,模型中也应该一样。

Example(示例)
void draw(int x, int y, int x2, int y2);  // BAD: unnecessary implicit relationships
void draw(Point from, Point to);          // better
Note(注意)

A simple class without virtual functions implies no space or time overhead.

不包含虚函数的简单类不会产生空间和时间方面的额外代价。

Note(注意)

From a language perspective class and struct differ only in the default visibility of their members.

从语言的观点来看,class和struct的区别只是默认状态下成员的可见性不同。

译者注:这只是编译层面的区别。

Enforcement(实施建议)

Probably impossible. Maybe a heuristic looking for data items used together is possible.

大概是不可能的。也许启发式地寻找一起使用的数据是可能的。

觉得本文有帮助?请分享给更多人

关注【面向对象思考】,每天前进一小步

有任何疑问,欢迎留言提问或讨论


面向对象设计,面向对象编程,面向对象思考!

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则ES.64:使用T{e}记法构造对象

    The T{e} construction syntax makes it explicit that construction is desired. The...

    面向对象思考
  • C++核心准则CP.200:使用volatile只能表明该变量是非C++内存

    volatile is used to refer to objects that are shared with "non-C++" code or hard...

    面向对象思考
  • C++核心准则C.140:不要为虚函数和它的覆盖函数设定不同的默认参数

    That can cause confusion: An overrider does not inherit default arguments.

    面向对象思考
  • Leetcode 84 Largest Rectangle in Histogram

    Given n non-negative integers representing the histogram's bar height where the...

    triplebee
  • 仿qq最新侧滑菜单

    为了后续对这个项目进行优化,比如透明度动画、背景图的位移动画,以及性能上的优化。 我把这个项目上传到github上面,请大家随时关注。 github地址 htt...

    xiangzhihong
  • ZOJ 3715 Kindergarten Election

    At the beginning of the semester in kindergarten, the n little kids (indexed fro...

    ShenduCC
  • 1059. C语言竞赛(20)

    C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:

    AI那点小事
  • 剑指Offer-孩子们的游戏(圆圈中最后剩下的数)

    package Other; import java.util.LinkedList; /** * 孩子们的游戏(圆圈中最后剩下的数) * 每年六一儿童...

    武培轩
  • ZOJ 3209 Treasure Map(精确覆盖)

    Treasure Map ---- Time Limit: 2 Seconds      Memory Limit: 32768 KB ---- Your bo...

    ShenduCC
  • (30) 剖析StringBuilder / 计算机程序的思维逻辑

    上节介绍了String,提到如果字符串修改操作比较频繁,应该采用StringBuilder和StringBuffer类,这两个类的方法基本是完全一样的,它们的实...

    swiftma

扫码关注云+社区

领取腾讯云代金券