learun开发社区 - 力软.net/java快速开发平台官方论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 717|回复: 3

10步让你成为更优秀的程序员

[复制链接]

7

主题

7

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2019-5-16 09:32:54 | 显示全部楼层 |阅读模式
这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的10件事情。


  • 永远不要复制代码


不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是bug,它还会使你的代码体积变得臃肿。现代的编程语言提供了很好的方法来解决这些问题,例如,下面这个问题在以前很难解决,而如今使用lambdas却很好实现:
/// /// 一些函数含有部分重复代码/// void OriginalA(){        DoThingsA();        // unique code        DoThingsB();}/// /// 另外一个含有部分重复代码的函数/// void OriginalB(){        DoThingsA();        // 没有重复的代码        DoThingsB();}现在我们重构含有部分相同代码的函数,用delegate模式重写它们:
/// /// Encapsulate shared functionality/// /// User defined actionvoid UniqueWrapper(Action action){        DoThingsA();        action();        DoThingsB();}/// /// New implmentation of A/// void NewA(){        UniqueWrapper(() =>        {                // unique code        });}/// /// New implementation of B/// void NewB(){        UniqueWrapper(() =>        {                // unique code        });}2. 留意你开始分心的时候



当你发现自己在浏览facebook或微博、而不是在解决问题,这通常是一种你需要短暂休息的信号。离开办公桌,去喝一杯咖啡,或去跟同事聊5分钟。尽管这样做看起来有点反直觉,但长久去看,它会提高你的工作效率。


3. 不要匆忙赶任务而放弃原则



当带着压力去解决一个问题或修改一个bug,你很容易失去自制,发现自己匆匆忙忙,甚至完全忘了一直坚持的重要的测试过程。这通常会导致更多的问题,会让你在老板或同事眼里显得很不专业。


4. 测试你完成的代码



你知道你的代码能做什么,而且试了一下,它确实好用,但你实际上需要充分的验证它。分析所有可能的边界情况,测试在所有可能的条件下它都能如期的工作。如果有参数,传递一些预期范围外的值。传递一个null值。如果可能,让同事看看你的代码,问他们能否弄坏它。单元测试是到达这种目的的常规方法。


5. 代码审查



提交你的代码之前,找个同事一起坐下来,向他解释你做了哪些修改。通常,这样做的过程中你就能发现代码中的错误,而不需要同事说一句话。这比自己审查自己的代码要有效的多得多。


6. 让代码更少



如果你发现写了大量的代码来解决一个简单的问题,你很可能做错了。下面的boolean用法是一个很好的例子:
if (numMines > 0){   enabled=true;}else{   enabled=false;}这时你应该写成这样:
enabled = numMines > 0;代码越少越好。这会使bug更少,重构可能性更小,出错的几率更小。要适度。可读性同等重要,你可不能这样做而使代码丧失可读性。


7. 为优雅的代码而努力



优雅的代码非常的易读,只用手边很少的代码、让机器做很少的运算就能解决问题。在各种环境中都做到代码优雅是很难的,但经过一段时间的编程,你会对优雅的代码是个什么样子有个初步的感觉。优雅的代码不会通过重构来获得。当你看到优雅的代码是会很高兴。你会为它自豪。例如,下面就是一个我认为是优雅的方式来计算多边形面积的方法:
static public double GetConvexPolygonArea(Vector2[ vertices){        double area = 0;        for (int i = 0; i <span style="background-color: transparent; border: 0px; vertical-align: baseline; color: rgb(0, 128, 0);">
回复

使用道具 举报

0

主题

5

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 2019-5-21 10:48:41 | 显示全部楼层
优秀程序员 - 尼古拉斯.嘉瓦
回复

使用道具 举报

0

主题

8

帖子

184

积分

注册会员

Rank: 2

积分
184
发表于 2019-5-22 10:23:30 | 显示全部楼层
还有三步呢?
回复

使用道具 举报

0

主题

6

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
发表于 2019-5-29 10:11:52 | 显示全部楼层
ctrl+c     ctrl+v不香嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|learun开发社区 - 力软.net/java快速开发平台官方论坛 ( 沪ICP备14034717号 )

GMT+8, 2020-11-27 00:00 , Processed in 0.210653 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表