免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 41809 | 回复: 75
打印 上一主题 下一主题

你会得意的封装么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-03 22:30 |只看该作者 |倒序浏览
有些代码的封装真的很恶心,直接用没什么麻烦的,非要脱了裤子放屁。搞得我超级郁闷,找了半天才发现人家封装了。
单选投票, 共有 28 人参与投票
41.38% (12)
58.62% (17)
您所在的用户组没有投票权限

论坛徽章:
0
2 [报告]
发表于 2009-12-03 22:32 |只看该作者
我来顶,有必要的才封装!

论坛徽章:
0
3 [报告]
发表于 2009-12-03 23:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2009-12-03 23:26 |只看该作者
我曾经也是理论派,一动手写代码首先是封装基本的数据结构、函数。直到有一次一位级别很高的Arch看了我的代码后问我:你为什么不直接用glib?我回答是为了移植方便。Arch告诉我直接用,但没说原因。我只好照办了。后来慢慢感觉到:
1、在开始动手时就把目标定得太高,会给你带来很多麻烦,考虑移植性往往让你举步维艰
2、community的人喜欢看到他们熟悉的库函数,而不是你自己的封装,特别是在你封装后的函数名称与众所周知的库函数名相去甚远时
3、你的程序99%的时候是运行在你所用的平台的,例如linux。
4、等你的项目名动社区时,比如集成到了各大Linux发行版中,再慢慢修改代码成可移植的版本也不迟。
5、不要以“等成熟后修改,代码量太大了”为借口,fedaro总共2000多个包,上10w行代码的项目没有几个
6、开始做的适合,只要架构设计得当,则以先完成功能为主
7、openssh的方式也不错,即有一个平台特定的版本,也有一个可移植于各平台的版本。虽然我个人认为openssh的代码很烂,但我同意它主页上的话:

OpenSSH is developed by two teams. One team does strictly OpenBSD-based development, aiming to produce code that is as clean, simple, and secure as possible. We believe that simplicity without the portability "goop" allows for better code quality control and easier review. The other team then takes the clean version and makes it portable (adding the "goop") to make it run on many operating systems -- the so-called -p releases, ie "OpenSSH 5.3p1".

评分

参与人数 1可用积分 +10 收起 理由
cugb_cat + 10 我很赞同

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2009-12-03 23:33 |只看该作者
封装是理想,一般不封装

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
6 [报告]
发表于 2009-12-03 23:36 |只看该作者

回复 #1 prolj 的帖子

是啊……   封装是我很反感的一个词……
听见谁说封装,就有上去抽他一嘴巴的冲动……

看到很多c lib的c++bind……   恶心……
c lib提供的已经是很完善的概念了,非要自己再去搞一套……

搞么就好好搞,提出点新意来 —— 不过估计难,还不如重做。
大多数时候听见别人说封装……  其实就下面2个意思之一……

1. 将 function( o , param ); 改为 o.function( param ); 使之更OO一些
2. 将library提供的功能,限制在自己使用的一个常用子集上
使得可以少敲一些代码。凸显经过封装后,代码行数是多么的少……
基本上,出于这种目的的封装,都是不可复用的。
既然不可复用,封装所消耗的代码就是100%的成本,不能摊到下一次复用中去。
将那坨不可复用的shit算在一起,总共的代码不会有丝毫减少 ……


刚下了OpenCV2.0的代码……   恶心啊……  对OpenCV彻底绝望了……

[ 本帖最后由 OwnWaterloo 于 2009-12-3 23:44 编辑 ]

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
7 [报告]
发表于 2009-12-03 23:47 |只看该作者

回复 #4 zx_wing 的帖子

所以嘛…… 有glib就不要自己去搞uint32_t 这种东西。
有stdint.h在glib之外就不要用glib的uint32_t……

论坛徽章:
0
8 [报告]
发表于 2009-12-04 09:22 |只看该作者
大家都对封装这么反感。。

我不得不说,我自己基本不玩封装,但是我一直都在用别人的封装,有什么理由不用呢?

C语言我经常使用的有NSPR, glib和APR偶尔用用,但是不会混着用

C++就更狠了,做个系统基本就是在玩库。

在你们高手眼中,像我这样儿的,肯定被BS得要死。。。

论坛徽章:
0
9 [报告]
发表于 2009-12-04 10:17 |只看该作者
封装是为了隐藏肮脏的实现

论坛徽章:
0
10 [报告]
发表于 2009-12-04 10:19 |只看该作者
把常用的功能封装起来有何不可?难道我每次写程序时,都得再重写一遍链表操作的函数?
一个项目中,我多次使用以同样的方式同时使用某些库函数的子集功能,那么我为何不封装?

LS几位高手是不是见垃圾封装太多了而导致了“封装”敏感了?呵呵,或许俺的封装也很垃圾,不过,至少俺用的舒服,开发起来很方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP