1. 永远不要复制代码
/// /// 一些函数含有部分重复代码 /// void OriginalA() { DoThingsA(); // unique code DoThingsB(); }/// /// 另外一个含有部分重复代码的函数 /// void OriginalB() { DoThingsA(); // 没有重复的代码DoThingsB(); }
现在我们重构含有部分相同代码的函数,用delegate模式重写它们:
/// /// Encapsulate shared functionality /// /// User defined action void 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. 留意你开始分心的时候
3. 不要匆忙赶任务而放弃原则
4. 测试你完成的代码
5. 代码审查
6. 让代码更少
if (numMines > 0) { enabled=true; } else { enabled=false; }
这时你应该写成这样:
enabled = numMines > 0;
7. 为优雅的代码而努力
static public double GetConvexPolygonArea(Vector2[] vertices) { double area = 0; for (int i =0; i <</span> 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. 不要使用纯数字
10. 不要做手工劳动
11. 避免过早优化
好吧,我说是10个,但你却得到了额外赠送的一个!