博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)成为优秀程序员需掌握的11个要点
阅读量:5032 次
发布时间:2019-06-12

本文共 2822 字,大约阅读时间需要 9 分钟。

下面,我将作为一名有着多年编程经验的专业程序员,分享一些精华——它们已经帮助我提高了我的代码质量和整体的工作效率,希望也能对你有所裨益 。

 

1.永远不要重复代码

不惜一切代价也要避免重复代码。如果你有几个不同的地方经常性地要使用某个代码片段,那么可以将它重构成函数。代码重复不但会导致阅读混乱,导致bug——修复了这里的重复片段,却遗漏了其他地方的,还会导致代码库的臃肿和可执行文件大小的膨胀。现在的编程语言,能大大改善这方面的麻烦,例如,下面这段示例代码在委托和lambda表达式出现之前很难解决:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/// /// Some function with partially duplicated code
/// void OriginalA()
{
DoThingsA();
// unique code
DoThingsB();
}
/// /// Another function with partially duplicated code
/// void OriginalB()
{
DoThingsA();
// unique code
DoThingsB();
}

但是现在,我们既可以将上述代码重构成函数,也可以使用委托重写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// /// 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和Twitter——不能专注于解决问题了,那么这往往意味着你需要稍作休息了。不妨离开办公桌去喝杯咖啡,和同事聊上个5分钟。不要以为这是在浪费时间,从长远来看这能让你更富有成效。

3.解决方案要三思

在高压下想出的解决方案,修复的bug,很容易因为过于兴冲冲,而将平时铭记于心的关键测试周期完全抛之于脑后。但是这往往会导致更多的问题,并且会让你在老板和同事眼中看起来显得不那么专业。

4.测试完成的代码

你知道你的代码应该做什么,并且可能已经测试过了,但是,你需要证明这一点。分析所有可能的边缘情况,并给出测试,以便确定你的代码在所有可能的条件下都可以正常执行。如果有参数,那么发送一些预期的范围之外的值。还可以发送null值。如果可以的话,不妨让你的同事来搞搞破坏——单元测试是一条正规的康庄大道。

5.代码审查

在你将代码提交到源代码控制之前,最好先将你所做的改动给你的同事解释一下。有时候往往只需要这样做,就能让你意识到自己代码的错误,即使你的同事不发一言。这可比仅仅只是自己回顾自己的工作要来得高效得多了。

6.精简代码

如果你用了大量代码来执行一些简单操作,那么很有可能是你走错路了。以下对布尔值的处理就是一个很好的例子:

1
2
3
4
5
6
7
8
if 
(numMines > 
0
)
{
enabled=
true
;
}
else
{
enabled=
false
;
}

但其实你可以这么写:

1
enabled = numMines > 
0
;

代码越是精简越好——调试少了,重构少了,问题自然也少了。但是要注意的是:可读性同样重要。谁也不希望在精简代码的同时影响了代码的可读性。

7.努力写出优雅的代码

所谓优雅的代码,不但具备极强的可读性,还能以最少量的代码和机器操作来解决手头的问题。要想在所有情况下都能够做到代码的优雅,其实是相当难的,但是经过一段时间的编程之后,你会逐渐体悟到“优雅代码”应该是怎么样的。优雅的代码无法通过重构来做任何改进——为此自豪吧。下面这个计算凸多边形面积的代码示例就是我认为的“优雅的代码”:

1
2
3
4
5
6
7
8
9
10
11
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.编写自文档化的代码

注释是编程的一个非常重要的组成部分,但是自文档化的代码之所以能更胜一筹,是因为只通过阅读代码就能让人理解。通过巧妙选择函数名和变量名,再联系语言语义,就能够使得代码变得可读,哪怕阅读者是非编程人员。例如:

1
2
3
4
5
6
7
void 
DamagePlayer(Player player, 
int 
damageAmount)
{
if 
(!player.m_IsInvincible && !player.m_IsDead)
{
player.InflictDamage( damageAmount );
}
}

不过,自文档化的代码并不能替代注释。使用注释来解释“为什么”,用自文档化的代码来描述是“什么”。

9.不要使用奇奇怪怪的数字

光是将数字插入到代码中是不对的,因为没人能理解它们代表了什么。这会混淆我们——当相同的数字用于代码中多个不同地方的时候。有的地方可能会因此而导致变化,也有的会因此而产生bug。尽量使用命名的常量来描述要表达的值,即便它仅用于一个地方。

10.自动化

当我们在做一连串的动作时,是很容易犯错的。如果你的部署进程不只一个步骤,那么你出错了。我们应该尽可能地自动化,以减少人为犯错的机会。如果你需要执行很多任务的话,自动化就显得尤为重要了。

11.避免过早优化

一旦你开始优化已经可以成功运行的代码,那么就会有破坏功能的风险。优化应该只响应于性能分析,在项目结束的时候进行。提前于分析阶段的优化不但浪费时间,还会导致bug。

 

摘自:hollo

转载于:https://www.cnblogs.com/antyi/p/4488165.html

你可能感兴趣的文章
Python oct() 函数
查看>>
【学习总结】GirlsInAI ML-diary day-6-String字符串
查看>>
【问题解决方案】知乎某个答案的链接在哪里的问题
查看>>
VC2005 向窗口的按钮发送单击消息
查看>>
java 中如何连接 oracle 数据库
查看>>
weui button的使用
查看>>
使用TidCookieManager得到cookie
查看>>
faiss学习
查看>>
busybox 初始化
查看>>
sql分组拼接字段
查看>>
mdadm
查看>>
nginx超时问题
查看>>
使用Maven构建多模块项目
查看>>
Vim 常用快捷键
查看>>
lintcode :Count and Say 报数
查看>>
libeXosip2(3) -- SIP messages and call control API
查看>>
PHP-浏览器参数防注入检测函数
查看>>
面试技巧锦集
查看>>
PLSQL日期函数
查看>>
8 个最好的 jQuery 树形 Tree 插件
查看>>