不论你在什麽时候开始,重要的是开始之后就不要停止.不论你在什麽时候结束,重要的是结束之后就不要悔恨。!

将博客搬至CSDN

@技巧---10 steps to becoming a better programmer(10个步骤让你变更好)---精选9条
1****,让代码更少(为简洁优雅的代码而努力)
如果你发现写了大量的代码来解决一个简单的问题,你很可能做错了。下面的 boolean 用法是一个很好的例子:
if (numMines > 0)
{
enabled=true;
}
else
{
enabled=false;
}
这时你应该写成这样:
enabled = numMines > 0;
代码越少越好。这会使 bug 更少,重构可能性更小,出错的几率更小。要适度。可读性同等重要,你可不能这样做而使代码丧失可读性。

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

3,避免犯错误---不要做手工劳动
  当做一系列动作时,人类总是喜欢犯错误。如果你在做部署工作,并且不是一步能完成的,那你就是在做错事。尽量的让工作能自动化的完成,减少人为错误。当做工作量很大的任务时,这尤其重要。

4,永远不要复制代码---修改起来,麻烦,要修改多个地方
  不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。*****而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是 bug,*****,而且它还会使你的代码体积变得臃肿。

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

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

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

8****,为优雅的代码而努力(为简洁优雅的代码而努力---能1行完成的别3行,4行完成)
(1),原始代码;
List<int> idsToFind = new List<int>();
idsToFind.Add(1);
idsToFind.Add(2);
修改后:
List<int> idsToFind = new List<int> {1, 2}; //一行代替3行

(2),原始代码:
var startingPoint = new Point();
startingPoint.X = 5;
startingPoint.Y = 13;
修改后:
var startingPoint = new Point() { X = 5, Y = 13 }; //一行代替3行

(3),原始代码:
if(c != null)
System.Console.WriteLine(c.Name);
else
System.Console.WriteLine("List element has null value.");
修改后:
System.Console.WriteLine(c!=null?c.Name:"List element has null value.");
--用三元表达式,代替if...else

(4),原始代码:
string name = value;
if(value == null)
{
name = string.Empty;
}
修改后:
string name = (value != null) ? value : string.Empty;

9,****优雅代码 和代码规范,和命名潜规则

(1)将所有来自framework的namespace放在前面,而后再放第三方或自定义的:
using System;
using System.Linq;
using System.Data.Linq;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.DataAnnotations;
using CodeSmith.Data.Attributes;
using CodeSmith.Data.Rules;

(2)尽量不用单个字符命名变量,象i或者t。使用index或者temp之类代替。

(3)interface名字以I开头

(4)不要使用””, 使用string.Empty
正确的:
string name = string.Empty;
不建议:
string name = "";

(5) 一个方法的参数不能超过5个,当多于5个时,应进行函数的拆分或者参数的封装。-- 嚯嚯就像论题一样的规定。

(6)善于合并if
观察下面这段可爱的代码:
public bool Equals(CommentData obj) {
if (!CommentId.Equals(obj.CommentId)) return false;
if (!Comment.Equals(obj.Comment)) return false;
if (!CommentorId.Equals(obj.CommentorId)) return false;
return true;
}
如果我们写成这样会不会好些呢:
public bool Equals(CommentData obj) {
return CommentId == obj.CommentId &&
Comment.Equals(obj.Comment) &&
CommentorId == obj.CommentorId;
}

(7)局部变量,参数用camel casing
partial void OnContactIdChanging(int value) //方法名
{
int number; //局部变量名
}

(8)类名、方法、常数使用Pascal casing
public class MyClass //类名
{
const int DefaultNumber = 100; //常量
public void MyMethod() //方法
{ }
}

posted @ 2014-01-26 15:35  王小龙90  阅读(142)  评论(0编辑  收藏  举报