免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: asuka2001
打印 上一主题 下一主题

命名难,难于上青天 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2012-02-10 21:21 |只看该作者
本帖最后由 三月廿七 于 2012-02-10 21:25 编辑

glib或者linux这样的公开结构定义的设计是否合理?

我觉得不合理,
/*
所以即使我知道_GArray结构的具体信息,通常我也当作不知道,而是用garray_xxx函数去操作。
除非我看到文档里说了该结构里面某个域的意图就是公开使用的;或者到了很特殊的情况,我能承担让自己的一部分代码与glib共同演化的代价。
*/
软件不是一个人开发的, 没有ADT(只通过接口仿问变量的)就不能保证开发小组的每一个成员
都按照ADT的规则仿问变量。这样,就不能保证代码的一致性,导致不能保证代码的易扩展、易维护

ADT 是 一套强制性规则,是2,但不是真的2

论坛徽章:
0
62 [报告]
发表于 2012-02-10 21:23 |只看该作者
回复 53# 三月廿七
  1. // binary expression
  2. class expression_binary : public language_expression
  3. {
  4. public:
  5.         expression_binary() : _lhs(0), _rhs(0) {}
  6.         expression_binary(user_string op, language_expression *lhs, language_expression *rhs)
  7.                 : _operator(op), _lhs(lhs), _rhs(rhs)
  8.         {}
  9.         MAKE_QUERY_FUNC_ABS(expression_binary, language_expression);
  10.         virtual language_type *get_expression_type();
  11.         virtual bool type_recheck();
  12.         virtual const tstring get_print_name() const;
  13.         language_expression * _lhs, *_rhs;
  14.         user_string _operator;
  15. };
复制代码
手头正在写的代码,所有成员全部公开,无需geter/seter,因为下面三个原因:

1. 他们可以是任意值(野指针除外,由于使用object pool,所以保证不会有野指针)
2. 即便隐藏起来提供geter/seter,最终还是在任何时候都要check。不如不隐藏,随便用。
3. 一般使用都是通过基类language_expression,这已经是一种隐藏了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
63 [报告]
发表于 2012-02-10 21:26 |只看该作者
三月廿七 发表于 2012-02-10 21:21
glib或者linux这样的公开结构定义的设计是否合理?

我觉得不合理,
/*
所以即使我知道_GArray结构的具体信息,通常我也当作不知道,而是用garray_xxx函数去操作。
除非我看到文档里说了该结构里面某个域的意图就是公开使用的;或者到了很特殊的情况,我能承担让自己的一部分代码与glib共同演化的代价。
*/
软件不是一个人开发的, 没有ADT(只通过接口仿问变量的)就不能保证开发小组的每一个成员
都按照ADT的规则仿问变量。这样,就不能保证代码的一致性

ADT 是 一套强制性规则,是2,但不是真的2

glib以及linux kernel的衍生代码怎么还没出毛病呢,真是的,连一致性都不能保证,怎么活到今天的

论坛徽章:
0
64 [报告]
发表于 2012-02-10 21:29 |只看该作者
可许他们是使用了 文档 或者是 会议等一些原始的方式避免了这么一个问题

论坛徽章:
0
65 [报告]
发表于 2012-02-10 21:36 |只看该作者
高质量C编程指南   里面有讲到命命名规则什么的吧。。。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
66 [报告]
发表于 2012-02-10 21:40 |只看该作者
三月廿七 发表于 2012-02-10 21:29
可许他们是使用了 文档 或者是 会议等一些原始的方式避免了这么一个问题


隐藏定义相对private在二进制兼容性上更好,但有运行时代价的强制性规则。
private是二进制不兼容,但无运行代价的强制性规则 —— 可惜C语言没有,它是不是又搓了?

既然C不提供private,至少还有文档等原始但无运行时代价的方式。
这是C,不是Java,可不是什么东西都随便按引用在堆上分配的。

论坛徽章:
0
67 [报告]
发表于 2012-02-10 21:50 |只看该作者
比如
【规则3-2-6】类的数据成员加前缀m_(表示member),这样可以避免数据成员与
成员函数的参数同名。
例如:
void Object::SetValue(int width, int height)
{
m_width = width;
m_height = height;
}

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
68 [报告]
发表于 2012-02-10 21:56 来自手机 |只看该作者
凡事生搬硬套所谓规定的, 我皆认为是教条主义

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
69 [报告]
发表于 2012-02-10 22:43 |只看该作者
回复 16# koolcoy

准确点说,在它所处的抽象层级上,它所做的是一件事,虽然这件事有很多步骤(下一抽象层级的具体实现)

烦恼在于,怎么样准确的描述出它提供的本质功能(机制)

   

论坛徽章:
0
70 [报告]
发表于 2012-02-10 22:45 |只看该作者
回复 68# zylthinking


    这与我们平时的规则不同,我们可以不遵守这个规则,但有它我们行事方便,可将此处的“规则”理解为:更“简便有效的方法or捷径“。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP