免费注册 查看新帖 |

Chinaunix

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

[其他] 为何要把程序如此层层包装起来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-21 16:18 |只看该作者 |倒序浏览
本帖最后由 zunhuakq 于 2012-07-21 16:18 编辑

看了好多源代码,发现开源很可怕,很难通过源代码去理解作者的意图啊……即便用各种代码分析工具去处理,仍然是,很多情况下,一点都看不懂。不理解,为何要把程序如此层层包装起来?

就拿GNU Guile的源代码举例吧,用GNU Global把它处理成HTML,看到有个地方用了scm_from_latin1_string
便点链接去跟踪:

scm_from_latin1_string (const char *str)
{
  return scm_from_latin1_stringn (str, -1);
}

继续跟踪:
scm_from_latin1_stringn (const char *str, size_t len)
{
  char *buf;
  SCM result;

  if (len == (size_t) -1)
    len = strlen (str);

  /* Make a narrow string and copy STR as is.  */
  result = scm_i_make_string (len, &buf, 0);
  memcpy (buf, str, len);

  return result;
}

还有!!继续:
scm_i_make_string (size_t len, char **charsp, int read_only_p)
{
  SCM buf = make_stringbuf (len);
  SCM res;
  if (charsp)
    *charsp = (char *) STRINGBUF_CHARS (buf);
  res = scm_double_cell (read_only_p ? RO_STRING_TAG : STRING_TAG,
                         SCM_UNPACK (buf),
                         (scm_t_bits) 0, (scm_t_bits) len);
  return res;
}

看不下去了,让人崩溃的级别呀……

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2012-07-21 16:21 |只看该作者
兄弟,你应该还没做过软件开发吧

论坛徽章:
0
3 [报告]
发表于 2012-07-21 16:25 |只看该作者
关于GNU/Linux,我还有好多不懂得地方,比如说,为何每次安装开源软件都要进行如此复杂的configure工作,不能进行一次就缓存下去吗?或者设置一个大数据库,存储这些检查项目的结果,这样可以节省很多时间那

论坛徽章:
0
4 [报告]
发表于 2012-07-21 16:25 |只看该作者
1,多次迭代的结果,为了前后兼容,不能直接把以前的接口去掉,但又不能直接在以前的接口里加功能,只好封装出新的接口。
2,函数功能尽量简短、单一,出了问题便于定位分析。

论坛徽章:
0
5 [报告]
发表于 2012-07-21 17:09 |只看该作者
本帖最后由 zunhuakq 于 2012-07-21 17:10 编辑

回复 2# cdtits


    没做过正式的软件开发……我只是个高中生啊
我也曾构思过一些软件工程,不过每次我都因为要把自己的程序包装得如此之厚而忍受不下去。
以前是玩VB的,设计C/C++程序时基本上没用过什么IDE……
后来才意识到原来我一直在用最原始的办法来写C/C++程序
然后,我就想起来还有IDE这码事
我对GNU/Linux很感兴趣,一直想装一个独立的Linux系统。为了爸妈方便,我只好装Cygwin|MSYS,虚拟机……不是太好用
感觉GNU对它的产品缺少宣传,不是很利于新手入门

论坛徽章:
26
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:1315-16赛季CBA联赛之天津
日期:2016-12-12 10:44:23
6 [报告]
发表于 2012-07-21 18:21 |只看该作者
高中生啊,那还是好好学习考大学吧,亲~

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2012-07-21 19:29 |只看该作者
zunhuakq 发表于 2012-07-21 16:25
关于GNU/Linux,我还有好多不懂得地方,比如说,为何每次安装开源软件都要进行如此复杂的configure工作,不 ...


不知道 Linux 有「包管理器」?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2012-07-21 19:39 |只看该作者
回复 1# zunhuakq


    如果所有的東西都寫在一块,就更沒法看了。例如:

  1. scm_from_latin1_string (const char *str)
  2. {
  3.   return scm_from_latin1_stringn (str, -1);
  4. }
复制代码
這兩個函數功能類似,難道幾乎差不多的代碼要出現兩份?你覺得那樣的代碼更容易懂?

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
9 [报告]
发表于 2012-07-22 08:17 |只看该作者
让人崩溃的呀

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
10 [报告]
发表于 2012-07-22 09:15 |只看该作者
楼主还是先好好念书吧,争取考个好大学,程序员这个行业太苦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP