`
MauerSu
  • 浏览: 492758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

源:http://www.aqee.net/10-steps-to-becoming-a-better-programmer/

评:

这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的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.

[英文原文:10 steps to becoming a better programmer ]
分享到:
评论

相关推荐

    成为优秀程序员的十个有效方法

    本文介绍了十个可以让你成为优秀程序员的有效方法,感兴趣的朋友可以看看。

    如何成为优秀程序员?

    如何成为优秀的程序员?请看程序员的10层楼

    一个优秀的程序员的十个习惯

    word文档关于程序员的习惯 如何成为优秀程序员的方法

    10招成为优秀JAVA程序员

    10招成为一名优秀的JAVA程序员,只要做到这十件事。

    成为优秀程序员的10条修炼秘籍

    人人都想成为优秀的程序员,但是,到底该怎么做呢?一起来看看

    六分钟八法则塑造优秀程序员

    这里提供给大家一个简单的解决方案,有一些方法可以让你在六分钟之内成为更优秀的程序员。 你有六分钟的闲暇时光,对么? 我们一起来吧! 1. 使用更大的显示字体 这个办法看上去非常简单,但是的确很有效果。 ...

    对九个超级程序员的采访:如何成为优秀的程序员

    我想通过电子邮件的方式对那些我非常感兴趣和非常敬重的程序员问10个问题。准备这10个问题我只花了5分钟,这些都是我个人想问他们的问题,所以,我基本上没想太多要问他们什么。最后两个问题和编程没有什么关系,我...

    PHP 编程好习惯,值得学习

    有些人问,优秀程序员和大牛有什么区别,大概有10到20种吧。因为大牛有很好的编程习惯 和丰富的经验,所以他们非常的高效。如果不好的编程习惯出现在你的代码里,你的代码效 率就会降低。本文阐述一些好的编程习惯,...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    C、C++语言是IT行业的主流编程语言,也是很多程序员必备的软件基本功,是软件开发行业招聘考查的重点。本书以流行的面试题讲解为主要内容,介绍了C、C++语言基本概念,包括保留字、字符串、指针和引用、结构体、...

    老程序员的下场

    长期从事编程活动的程序员都期望在50多岁时能爬到一个足够高的职位,或者能顺利的退休。但我在这里讨论的可能是一个你还没有想过的问题:如果到...我55岁,我的简历会让你感觉非常优秀,10年前我能挣到多达100万美元。

    测试之美(高清程序员十本必读书之一)

    微软的Alan Page拥有大规模自动化测试的丰富经验,他分享了一些如何让自动化测试更美丽的秘密 Scott Barber阐释了为什么性能测试需要成为一个协作性的过程,而非测量速度的简单练习 Karen N. Johnson 描述了在测试...

    成为编程高手的12条军规

    如果你决定了要当一个好的程序员,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才!  21.你要有足够的韧性和毅力!有个高手出一一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都...

    《程序设计实践》第十章

    第十章本书是Brian W. Kernighan和Rob Pike合著的最新力作。...本书值得每个梦想并努力使自己成为优秀程序员的人参考,值得每个计算机专业的学生和计算机工作者阅读,也可作为程序设计高级课程的教材或参考书。

    梁肇新《编程高手箴言》

    本书是作者十余年编程生涯中的技术和经验的总结。内容涵盖了从认识CPU、Windows运行机理、... 本书将为广大程序员打下牢固的知识基础,适用于立志成为编程高手的广大程序员,是一本不可多得的国内编程高手的鼎力之作。

    《“笨办法”学Python(第3版)》[美]Zed A. Shaw azw3

    本书是一本Python入门书籍...Python是世界上最强大、最受欢迎的编程语言之一,很快你就会成为一名Python程序员。 你还可以看Zed的视频!随书附赠的DVD中包含5个多小时激情挥洒的教学内容:一部完整的Python视频教程!

    笨办法”学Python(第3版).mobi带目录、书签、超清文字版

    笨办法”学Python(第3版)....Python是世界上最强大、最受欢迎的编程语言之一,很快你就会成为一名Python程序员。 你还可以看Zed的视频!随书附赠的DVD中包含5个多小时激情挥洒的教学内容:一部完整的Python视频教程!

    笨办法学python.zip

    Python是世界上最强大、最受欢迎的编程语言之一,很快你就会成为一名Python程序员。 "笨办法"学Python(第3版)目录 习题0 准备工作 1 习题1 第一个程序 7 习题2 注释和#号 12 习题3 数字和数学计算 14 习题4 ...

    抛物线法matlab源码-data_analisys:适用于python初学者的dataanalisys,您可以100天成为一名优秀的开发人员

    暴躁会让程序员主动的去完成一些你还没有提出的工作,去优化自己的代码让它更有效率,能够3秒钟完成的任务,我们绝不能容忍1分钟的等待。 自负会促使程序员写出可靠无误的代码,我们写代码不是为了接受批评和指责,...

Global site tag (gtag.js) - Google Analytics