这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的10件事情。
1. 永远不要复制代码
不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是bug,它还会使你的代码体积变得臃肿。现代的编程语言提供了很好的方法来解决这些问题,例如,下面这个问题在以前很难解决,而如今使用lambdas却很好实现:
/// <summary>
/// 一些函数含有部分重复代码
/// </summary>
void OriginalA()
{
DoThingsA();
// unique code
DoThingsB();
}
/// <summary>
/// 另外一个含有部分重复代码的函数
/// </summary>
void OriginalB()
{
DoThingsA();
// 没有重复的代码
DoThingsB();
}
现在我们重构含有部分相同代码的函数,用delegate模式重写它们:
/// <summary>
/// Encapsulate shared functionality
/// </summary>
/// <param name="action">User defined action</param>
void UniqueWrapper(Action action)
{
DoThingsA();
action();
DoThingsB();
}
/// <summary>
/// New implmentation of A
/// </summary>
void NewA()
{
UniqueWrapper(() =>
{
// unique code
});
}
/// <summary>
/// New implementation of B
/// </summary>
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 < vertices.Length; i++)
{
Vector2 P0 = vertices[i];
Vector2 P1 = vertices[(i + 1) % vertices.Length];
area += P0.Wedge(P1);
}
return area / 2;
}
8. 编写不言自明的代码
勿庸置疑,注释是编程中很重要的一部分,但能够不言自明的代码跟胜一筹,因为它能让你在看代码时就能理解它。函数名变量名要慎重选择,好的变量/方法名字放到语言语义环境中时,不懂编程的人都能看懂。例如:
void DamagePlayer(Player player, int damageAmount)
{
if (!player.m_IsInvincible && !player.m_IsDead)
{
player.InflictDamage( damageAmount );
}
}
能自我说明的代码不能代替注释。注释是用来解释“为什么”的,而自我说明的代码是来描述“是什么”的。
9. 不要使用纯数字
直接把数字嵌入代码中是一种恶习,因为无法说明它们是代表什么的。当有重复时更糟糕——相同的数字在代码的多个地方出现。如果只修改了一个,而忘记了其它的。这就导致bug。一定要用一个命名常量来代表你要表达的数字,即使它在代码里只出现一次。
10. 不要做手工劳动
当做一系列动作时,人类总是喜欢犯错误。如果你在做部署工作,并且不是一步能完成的,那你就是在做错事。尽量的让工作能自动化的完成,减少人为错误。当做工作量很大的任务时,这尤其重要。
11. 避免过早优化
当你要去优化一个已经好用的功能代码时,你很有可能会改坏它。优化只能发生在有性能分析报告指示需要优化的时候,通常是在一个项目开发的最后阶段。性能分析之前的优化活动纯属浪费时间,并且会导致bug出现。
好吧,我说是10个,但你却得到了额外赠送的一个!
这些就是我要说的,我希望它们能帮助你改进编程开发过程。
下次再见!祝快乐!
Cheers, Paul.
分享到:
相关推荐
【优秀程序员的十个习惯】 1. 持续学习与跟进新技术:作为优秀程序员,保持对新知识的渴望至关重要。不断学习新的编程语言、框架和工具,关注行业动态,参与专业社区讨论,如CSDN、ITPUB、CHINAUNIX、digg.com等,...
本文介绍了十个可以让你成为优秀程序员的有效方法,感兴趣的朋友可以看看。
成为优秀的程序员不仅在于编写高质量的代码,更重要的是养成一系列有益的习惯,这些习惯能够提升个人技能,促进团队协作,以及保持对技术的敏锐度。以下是对标题和描述中提到的十个程序员习惯的详细解释: 1. **...
如何成为优秀的程序员?请看程序员的10层楼
"成为优秀程序员的 101 个技巧" 本资源为程序员提供了 101 条实用的技巧,从搜索问题答案到编写有用的注释,从承诺不足到超额交付,从寻找导师到成为导师,从适当命名变量到删除不用的代码,从学习阅读代码到建立...
要成为一名杰出的Java程序员,以下十点建议至关重要。首先,你需要拥有扎实的编程基础和对面向对象编程(OOP)的深刻理解。OOP是Java的核心,理解和掌握类、对象、继承、多态和设计模式是提升编程能力的关键。不仅要...
针对文件信息,接下来的内容将基于“程序员到项目经理”的职业发展路径进行详细的知识点阐述。 首先,程序员与项目经理虽然都属于IT行业中的职位,但...只有通过不断的尝试和反思,才能真正成为一个优秀的项目经理。
### 成为优秀程序员的10条修炼秘籍详解 #### 1. 不要拖延工作 在编程工作中,遇到问题如bug或乱码时,应当即刻解决,避免问题积累。拖延不仅会导致问题复杂化,还可能增加后续修复的难度。及时处理这些问题有助于...
【标题】"如何成为优秀的JSP程序员"涵盖了成为一名在JavaServer Pages (JSP) 技术领域出类拔萃的专业人士所需掌握的关键知识点。JSP是Java平台上的一个标准组件,用于开发动态web应用程序。要成为一名优秀的JSP...
10. 程序员目标:雷军认为,程序员目标不是追求高级程序员,而是热爱写程序,热爱电脑世界的美妙,并且是一个完美主义者。 11. 程序员之路:雷军认为,程序员之路是漫长的,需要热爱写程序,热爱电脑世界的美妙,...
成为一名优秀的程序员不仅涉及技术技能的积累,更关乎个人素质、思维模式和工作习惯的培养。以下是一些关键点,帮助你提升成为一名出色程序员的...遵循这些原则,不断实践和提升,你将成为一名备受尊重的优秀程序员。
【标题】:“如何成为一个优秀的JSP程序员”...以上就是成为优秀JSP程序员所需的关键知识点。只有深入理解并熟练应用这些技术,才能在Web开发领域游刃有余。通过不断的学习和实践,你将逐步成长为一名出色的JSP程序员。
想要成为一名优秀的JSP程序员,你需要掌握一系列关键技能和知识领域。以下是一份详细的指南,帮助你踏上成为JSP专家的旅程。 1. **基础理论**:首先,你需要对Java编程有深入理解,因为JSP最终会转换为Java Servlet...
由于只有一个文件名“如何成为一个优秀的JSP程序员”,可以推测该文件可能是一个综合性的指南或教程,包含多个章节,分别讲解成为优秀JSP程序员所需的不同方面。 **详细知识点:** 1. **JSP基础** - 学习JSP的基础...
### 程序员的十个层次:从菜鸟到牛人的成长之路 #### 第1层:菜鸟 菜鸟作为程序员生涯的起点,门槛较...随着中国软件行业的不断发展和完善,未来必定会有越来越多的优秀程序员脱颖而出,为世界带来更多的创新和改变。
以下将详细介绍成为优秀程序员所需要的关键能力: #### 一、掌握语言与工具(Languages and Tools) 1. **编程语言**:熟练掌握至少一种编程语言是基础,如Java、Python等。同时,对多种编程语言有一定的了解能够...
7. **尝试多种JSP服务器**:虽然Tomcat是一个很好的入门选择,但了解其他JSP服务器,如WebLogic、WebSphere等,能让你更好地应对不同环境的需求。学习不同服务器的特性有助于优化JSP应用程序。这个阶段可能需要2到7...