新手请教:两组同功能代码的区别与优劣

monkeyking12 2014-03-29 09:13:35
有下面两组代码:
IMap map = axMapControl1.Map;
ILayer layer = map.get_Layer(0);

ILayer layer = axMapControl1.Map.get_Layer(0);

这两组代码哪个可读性高?哪个效率高?第一组中定义的map对象引用有何意义?
...全文
135 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
monkeyking12 2014-03-30
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
[quote=引用 7 楼 monkeyking12 的回复:] 我的意思是如果我需要多次使用一个对象,却没有定义它的引用变量。以后再想使用它时要怎么做,每次都要用能返回它的方法再返回一次吗?
以后再想使用它,那么你就重构你的代码。而不是什么“再返回一次”。 如果不考虑上下文需求,单纯扯什么代码更好,是没有意义的。我通常会习惯写第二种代码,直到有需求时,才改为第一种。[/quote] 明白了,感谢。
  • 打赏
  • 举报
回复
关于哪一个可读性更高,显然要综合各种因素。例如你真的需要注释一下中间变量的逻辑含义,那么就用第一种写法。但是如果你觉得不必要注视中间变量的了逻辑含义、应该一带而过,那么就用第二种写法。 至于说所谓“效率”,凡是数字的东西请都自己写测试,用测试结果的数字来说话。并且把这种数字转换为人民币。如果纠结这种东西对于一个软件整体而言之不了几毛钱,就没有必要立刻去纠结这毛钱(或者你完全可以不用写程序,而是去向别人要来几毛钱)。
  • 打赏
  • 举报
回复
引用 7 楼 monkeyking12 的回复:
我的意思是如果我需要多次使用一个对象,却没有定义它的引用变量。以后再想使用它时要怎么做,每次都要用能返回它的方法再返回一次吗?
以后再想使用它,那么你就重构你的代码。而不是什么“再返回一次”。 如果不考虑上下文需求,单纯扯什么代码更好,是没有意义的。我通常会习惯写第二种代码,直到有需求时,才改为第一种。
monkeyking12 2014-03-30
  • 打赏
  • 举报
回复
引用 10 楼 Android_iPhone 的回复:
基本上永远是第一个好
为什么这么说?
monkeyking12 2014-03-29
  • 打赏
  • 举报
回复
我的意思是如果我需要多次使用一个对象,却没有定义它的引用变量。以后再想使用它时要怎么做,每次都要用能返回它的方法再返回一次吗?
  • 打赏
  • 举报
回复
如果你写 axMapControl1.Map.get_Layer(0); 而不给一个变量赋值,没有任何后果。这说明你随后的代码根本不需要引用这个变量。 c#是强类型的语言,它在编译时会仔细核对你的“本意”,而不是运行时才给你崩溃。因此如果你不声明一个 layer 变量,而编译也仍然可以通过,那么就说明是安全的,没有必要再考虑是否必须有一个 layer 变量的问题。
  • 打赏
  • 举报
回复
引用 3 楼 monkeyking12 的回复:
再问一下,如果一个对象没有声明一个引用变量来引用它,是不是就无法在程序中使用? 举个例子:我用map.get_Layer(int index)方法返回了一个ILayer对象,如果我不定义一个ILayer layer变量来引用这个返回会有什么后果?
没有什么后果。 当你需要引用它,你就可以把第二种写法的代码重新修改为第一种写法。 否则你就没有必要纠缠“到底写成第一种,还是第二种”。
  • 打赏
  • 举报
回复
都可以。 第一个要额外声明一个变量,而且打字时可能多费2秒钟时间。第二个打字迅速一气呵成,但是读起来不如第一个可读性好。
monkeyking12 2014-03-29
  • 打赏
  • 举报
回复
再问一下,如果一个对象没有声明一个引用变量来引用它,是不是就无法在程序中使用? 举个例子:我用map.get_Layer(int index)方法返回了一个ILayer对象,如果我不定义一个ILayer layer变量来引用这个返回会有什么后果?
日知己所无 2014-03-29
  • 打赏
  • 举报
回复
基本上永远是第一个好
chillystar 2014-03-29
  • 打赏
  • 举报
回复
可读性选1,效率选2。就可读性而言1更具条理,适合新手看;2其实也不差,只是新手不适应而已。至于效率选2的原因是2不需要开辟中间变量 map ,或者即使开辟也是交由系统去完成,在建立和释放过程效率更高;而1的中间变量 map 在内存中的存在时间会比2更长。
monkeyking12 2014-03-29
  • 打赏
  • 举报
回复
本人新手,还请各位大侠指教啊
devmiao 2014-03-29
  • 打赏
  • 举报
回复
没有太大的区别。优劣并不能在这两行代码中体现。
欢乐的小猪 2014-03-29
  • 打赏
  • 举报
回复
引用 7 楼 monkeyking12 的回复:
我的意思是如果我需要多次使用一个对象,却没有定义它的引用变量。以后再想使用它时要怎么做,每次都要用能返回它的方法再返回一次吗?
如果需多次使用,一般选择第一种写法。 若后续不需要IMap map ,可采用第二种。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧