在线[16826]
  首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章 首页
  首页
分类讨论区
  移民专栏
  未名形象秀
  未名黄页
新闻中心
  精华区
  未名博客
  网络电台
  未名之家
未名交友
[更多]
[更多]
Immigration column
weiminghome
同主题阅读:call-by-ref降低了C++程序可读性
[版面: 葵花宝典] [首篇作者:gandjmitbbs] , 2008年04月13日20:19:15
[首页] [上页] [下页] [末页] [分页: 1 2 ]
gandjmitbbs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 1 ]

发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Sun Apr 13 20:19:15 2008)

最近在看一个新项目的代码,有感。

例如看到一个函数调用,不能马上反应上来哪些传入参数会被修改,尤其code很长很多
,记不住function signature的时候。

用之前的call-by-value,通过指针修改传入参数,函数调用看一眼参数列表,看到&基
本就能知道这个参数要被修改了。

还有带默认参数的函数也是,若有好几个默认参数,挺容易搞混的。

这些功能减少了写程序人的工作量,但是读程序的工作量却增加了。但我觉得现在对程
序员来说读代码也越来越重要。

IDE要有添加信息功能就好了。比如在函数调用里加上哪些参数是call-by-ref,哪些是
启用了参数默认值等。

另外有没有度量程序可读性方面的研究?比如给定源代码,分析一遍之后给出可读性分
析,再给些改进建议什么的。
--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 192.94.]

 
如此经济,投资人纷纷转投汇市有因
圣戈班研发(上海)有限公司海归招聘启事
coconut
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 2 ]

发信人: coconut (向唐僧大师学习中), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Sun Apr 13 20:28:40 2008), 站内


你的 IDE sucks。甚至 Eclipse 都可以看这 signature 。

【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: 最近在看一个新项目的代码,有感。
: 例如看到一个函数调用,不能马上反应上来哪些传入参数会被修改,尤其code很长很多
: ,记不住function signature的时候。
: 用之前的call-by-value,通过指针修改传入参数,函数调用看一眼参数列表,看到&基
: 本就能知道这个参数要被修改了。
: 还有带默认参数的函数也是,若有好几个默认参数,挺容易搞混的。
: 这些功能减少了写程序人的工作量,但是读程序的工作量却增加了。但我觉得现在对程
: 序员来说读代码也越来越重要。
: IDE要有添加信息功能就好了。比如在函数调用里加上哪些参数是call-by-ref,哪些是
: 启用了参数默认值等。
: ...................

--
Imagine the most witty and concise verbal gem ever uttered.
Now imagine I said it, and quoted it here.



※ 来源:·BBS 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 71.105.]

 
goodbug
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 3 ]

发信人: goodbug (好虫), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Sun Apr 13 21:11:46 2008), 转信

俺觉得都没有可读性最好,Java只能传值进去,接口很清晰。

【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: 最近在看一个新项目的代码,有感。
: 例如看到一个函数调用,不能马上反应上来哪些传入参数会被修改,尤其code很长很多
: ,记不住function signature的时候。
: 用之前的call-by-value,通过指针修改传入参数,函数调用看一眼参数列表,看到&基
: 本就能知道这个参数要被修改了。
: 还有带默认参数的函数也是,若有好几个默认参数,挺容易搞混的。
: 这些功能减少了写程序人的工作量,但是读程序的工作量却增加了。但我觉得现在对程
: 序员来说读代码也越来越重要。
: IDE要有添加信息功能就好了。比如在函数调用里加上哪些参数是call-by-ref,哪些是
: 启用了参数默认值等。
: ...................


--

※ 来源:·BBS 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 99.227.]

 
thrust
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 4 ]

发信人: thrust (WoW 无限期冬眠中), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Sun Apr 13 21:13:32 2008), 转信

call-by-ref本来就不是让你滥用的. 你看看STL的定义, 有几个call-by-ref的?
可以数得出来的:

auto_ptr, 这个本来使用就很受限制.

iostream里显式或隐式的extractor, >>或者getline之类, 这些很难搞错.

swap(), 这个几乎不可能搞错.

剩下的, 基本上全是call-by-const-ref.

还是那句话, 语言允许的东西,不代表可以滥用.


【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: 最近在看一个新项目的代码,有感。
: 例如看到一个函数调用,不能马上反应上来哪些传入参数会被修改,尤其code很长很多
: ,记不住function signature的时候。
: 用之前的call-by-value,通过指针修改传入参数,函数调用看一眼参数列表,看到&基
: 本就能知道这个参数要被修改了。
: 还有带默认参数的函数也是,若有好几个默认参数,挺容易搞混的。
: 这些功能减少了写程序人的工作量,但是读程序的工作量却增加了。但我觉得现在对程
: 序员来说读代码也越来越重要。
: IDE要有添加信息功能就好了。比如在函数调用里加上哪些参数是call-by-ref,哪些是
: 启用了参数默认值等。
: ...................


--

※ 来源:·BBS 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 75.61.]

 
jejune
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 5 ]

发信人: jejune (孑孓), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Sun Apr 13 23:56:48 2008)

楼主肯定没有尽量使用const的习惯
--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 70.53.]

 
DBECera
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 6 ]

发信人: DBECera (按钮), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 00:25:43 2008)

同感。

【 在 jejune (孑孓) 的大作中提到: 】
: 楼主肯定没有尽量使用const的习惯



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 75.41.]

 
gandjmitbbs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 7 ]

发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 01:02:35 2008)

我当然知道Eclipse可以这样。我用slickedit,F12跳到signature也不难。

但是要启用这个功能有个假定,就是你知道这个函数可能有call-by-ref或者默认参数
,然后你才会把光标移过去确定是什么。而我期望的是在对代码没有多少了解的情况下
能一目了然地读过去。

BTW, Eclipse CDT的indexer不是一般的弱。凭这一点就可以淘汰了。

【 在 coconut (向唐僧大师学习中) 的大作中提到: 】
: 你的 IDE sucks。甚至 Eclipse 都可以看这 signature 。



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 24.6.]

 
gandjmitbbs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 8 ]

发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 01:04:51 2008)

我觉得语言的演进不能从总是“可写性”做改进,这样往往牺牲了“可读性”

【 在 goodbug (好虫) 的大作中提到: 】
: 俺觉得都没有可读性最好,Java只能传值进去,接口很清晰。



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 24.6.]

 
gandjmitbbs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 9 ]

发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 01:06:13 2008)

你说的是reference的另一个功用,即节省参数传递时间。跟我说的是两回事。

【 在 jejune (孑孓) 的大作中提到: 】
: 楼主肯定没有尽量使用const的习惯



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 24.6.]

 
gandjmitbbs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 10 ]

发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 01:14:23 2008)

这么说吧。如果你自己的代码需要在函数中修改外部变量的值,你是认为用call-by-
ref,将此变量按变参传入呢,还是用指针?

当然还有个观点是尽量用返回值在函数调用处修改。但如果有好几个变量的话挺麻烦的。

【 在 thrust (WoW 无限期冬眠中) 的大作中提到: 】
: call-by-ref本来就不是让你滥用的. 你看看STL的定义, 有几个call-by-ref的?
: 可以数得出来的:
: auto_ptr, 这个本来使用就很受限制.
: iostream里显式或隐式的extractor, >>或者getline之类, 这些很难搞错.
: swap(), 这个几乎不可能搞错.
: 剩下的, 基本上全是call-by-const-ref.
: 还是那句话, 语言允许的东西,不代表可以滥用.



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 24.6.]

 
DBECera
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 11 ]

发信人: DBECera (按钮), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 02:27:21 2008)

如果你自己的代码需要在函数中修改外部变量的值, 用call-by-ref, no const, 这样
别人一看就知道你要修改或更新这个变量值. 否则就call-by-ref const, 这样传递变
量自身不做变化.

【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: 这么说吧。如果你自己的代码需要在函数中修改外部变量的值,你是认为用call-by-
: ref,将此变量按变参传入呢,还是用指针?
: 当然还有个观点是尽量用返回值在函数调用处修改。但如果有好几个变量的话挺麻烦
的。



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 75.41.]

 
thrust
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 12 ]

发信人: thrust (WoW 无限期冬眠中), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 02:33:45 2008), 转信

基本上, 函数不应该修改外部变量的值, 除了返回之外.

如果有好几个变量的话, 就应该有个结构
或者就用指针显式的标明这是call-by-ref
除非函数名就明确指出这是call-by-ref, 比如swap(a, b), 或者trim_left_space(
string), sort_in_place(array)等等


【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: 这么说吧。如果你自己的代码需要在函数中修改外部变量的值,你是认为用call-by-
: ref,将此变量按变参传入呢,还是用指针?
: 当然还有个观点是尽量用返回值在函数调用处修改。但如果有好几个变量的话挺麻烦
的。



--

※ 来源:·BBS 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 75.61.]

 
vvs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 13 ]

发信人: vvs (vvs1991), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Mon Apr 14 11:31:20 2008), 转信

我同意thrust的意见。 特别是现在OO的程序,你要改变量,应该调用人家的method去
改。
带副作用的函数很不爽,不美。

【 在 thrust (WoW 无限期冬眠中) 的大作中提到: 】
: 基本上, 函数不应该修改外部变量的值, 除了返回之外.
: 如果有好几个变量的话, 就应该有个结构
: 或者就用指针显式的标明这是call-by-ref
: 除非函数名就明确指出这是call-by-ref, 比如swap(a, b), 或者trim_left_space(
: string), sort_in_place(array)等等
: 的。



--

※ 来源:·BBS 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 64.235.]

 
southwood
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 14 ]

发信人: southwood (minimax), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Thu Apr 17 22:38:37 2008)

C#在这些问题上处理的比较好,声明调用都是显式的。
--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 127.0.]

 
floyd
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 15 ]

发信人: floyd (新长征路上的痞子), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Sat May 10 17:44:50 2008)


【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: 最近在看一个新项目的代码,有感。
: 例如看到一个函数调用,不能马上反应上来哪些传入参数会被修改,尤其code很长很多
: ,记不住function signature的时候。
: 用之前的call-by-value,通过指针修改传入参数,函数调用看一眼参数列表,看到&基
: 本就能知道这个参数要被修改了。
: 还有带默认参数的函数也是,若有好几个默认参数,挺容易搞混的。
: 这些功能减少了写程序人的工作量,但是读程序的工作量却增加了。但我觉得现在对程
: 序员来说读代码也越来越重要。
: IDE要有添加信息功能就好了。比如在函数调用里加上哪些参数是call-by-ref,哪些是
: 启用了参数默认值等。
: ...................

这是个问题, 不过与其怪语言, 不如怪写程序的人. 要不改参数, 多用CONST不就行了?
想起来汇编够难读的, 可有人能写的通俗易读.


--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 70.68.]

 
gandjmitbbs
进入未名形象秀
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 16 ]

发信人: gandjmitbbs (Nothing), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Fri May 16 05:23:17 2008)

thrust老大这是标准教科书回答啊。呵呵。

主要有时候是代码演进中打补丁累计多了的问题。真要重设计也不现实。毕竟老代码很
稳定。

【 在 vvs (vvs1991) 的大作中提到: 】
: 我同意thrust的意见。 特别是现在OO的程序,你要改变量,应该调用人家的method去
: 改。
: 带副作用的函数很不爽,不美。



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 98.207.]

 
acectl
形象投票:
形象得分: 0
我的博客
[回复文章] [回信给作者] [本篇全文] [进入讨论区] [返回顶部] [修改文章] [删除文章] [转寄] [转贴] [ 17 ]

发信人: acectl (磨), 信区: Programming
标 题: Re: call-by-ref降低了C++程序可读性
发信站: BBS 未名空间站 (Fri May 16 11:58:05 2008)

这其实就是现有软件开发工业模式的恶果:觉得CS简单,用些没什么基础的人,觉得随便
怎么改一下就可以用了,多年后就积累出问题来了.老是赶deadline,好象年轻人就能加
班,不去仔细思考怎么做最好,凡是都是勉强凑活过去,以后就知道这种匆忙的bug fix结
果是产生了更多的bug.
【 在 gandjmitbbs (Nothing) 的大作中提到: 】
: thrust老大这是标准教科书回答啊。呵呵。
: 主要有时候是代码演进中打补丁累计多了的问题。真要重设计也不现实。毕竟老代码很
: 稳定。



--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 71.251.]