Language agnostic 不要忽视小细节
与这个网站上的大多数人相比,我的确是个新手。我想从专业人士那里得到一些关于如何避免在代码中犯愚蠢错误的建议Language agnostic 不要忽视小细节,language-agnostic,Language Agnostic,与这个网站上的大多数人相比,我的确是个新手。我想从专业人士那里得到一些关于如何避免在代码中犯愚蠢错误的建议 有没有其他人在刚开始的时候因为遗漏了一些导致大问题的细节而遇到问题?有没有什么习惯或行为可以帮助你克服这个问题。这里列出了一些常见的陷阱和/或避免这些陷阱的建议: 根据经验,避免错误的最好方法就是让错误发生在你身上 查看其他人的代码 让其他人检查您的代码 使用源代码管理,即使您是唯一的开发人员 在提交到源代码管理之前,请检查所有更改 考虑使用更现代的语言,让你更难犯错误 对代码进行大量注释
有没有其他人在刚开始的时候因为遗漏了一些导致大问题的细节而遇到问题?有没有什么习惯或行为可以帮助你克服这个问题。这里列出了一些常见的陷阱和/或避免这些陷阱的建议:
同行代码审查和单元测试。只有经验可以帮助你停止犯错误,但这些东西可以帮助你尽早了解你犯的错误。我发现在开始编码之前,我在纸上或至少在脑海中编写代码或算法。它让问题在你的头脑中变得更加清晰,当你可能会因为过于急切而犯愚蠢的错误时,你不应该只是发火并开始编码。像大多数其他获得的技能一样,熟能生巧。继续训练。我们都会犯愚蠢的错误,因为我们是人 我是一个新手,但我和许多经验丰富的专业人士一起工作过,他们犯了和我一样愚蠢的错误。这些错误你会从中吸取教训,并且几乎可以立即纠正 除此之外,我能推荐的最好的方法是在编写每一小段代码之后检查错误。当你一小时能写出数百行代码时感觉很棒,但当你有一千个错误和一千行代码要检查时,你很快就会崩溃。好好评论 将代码分隔开
拥有有意义的变量名。这就像你在生活中所做的一切一样。从在当地快餐店的油炸锅上自焚,到在他/她的第三次创业中成为一名企业家
犯错误,从错误中学习,并且更好地自己-不要忽视它们。我发现,如果我在提交到版本控制之前仔细阅读所有代码的差异,我几乎肯定会发现一些错误。如果我让其他人检查代码预签入,效果至少会加倍。我将在“熟能生巧”中添加另一个投票,但有一点补充: 完美的实践造就完美-一句相关的谚语是“实践造就永恒”,因此换句话说,确保你所实践的是良好的编码习惯,以减少错误:
- 单元测试
- 可读代码格式
- 有用的变量名
- 版本历史的源代码管理
等等。我还高度推荐大家看看好的开源项目,看看它们是如何组织和管理代码的。好的榜样比看到别人的错误更重要:好的判断来自经验 经验来自错误的判断
这听起来可能过于简单化了,但我试着遵循这个咒语。我尽量不犯我以前犯过的错误。练习-编写的代码越多,获得的经验就越多 重复使用代码-使用过很多次的代码最不可能包含缺陷 防御性编码-最小化危险代码的创建,避免边缘条件影响
测试——看看TDD单元测试(不是传统的单元测试)——这意味着记录预期的代码行为并创建测试它的代码。更多的代码意味着更多的经验、更多的自动化和更高的信心您已经有了一个良好的开端——认识到您还没有完全弄清楚。我们都不知道 确保您了解该域-这将立即消除一些错误。知道你在解决什么问题,然后开始尝试开发解决方案 有一个发展的方法。我使用测试优先的方法,但这不是唯一的方法。这为我提供了一个内置的检查器,我仍在进行中。我利用我的同龄人来激发我的想法,我以前使用过结对编程,并从中发现了价值 如果你开发一个系统来最小化“愚蠢”的错误,你会发现它们会消失。也许一份清单会有用。个人软件过程鼓励这种方法。试试看它是否有效 我喜欢在我把我的想法写进代码之前把它们白板上。我喜欢我的同龄人先告诉我为什么我的想法不正确。如果他们不能,我有理由相信我已经消除了一些可能的障碍
这其中很多都来自于经验,基本上来自于你所做的事情和从错误中吸取的教训 我发现,如果我在修复一个bug或思考一个问题时遇到任何特殊困难,我会休息5分钟。当我喝点东西或者放松一下,回到问题上来时,我会更加专注,压力也会减少。一般来说,在思考之前潜入并编写软件会导致重大错误。我雇佣了两名程序员,我坚持他们要做的就是这样。这有很大的不同 在p上绘制您正在设计的屏幕
// Create local variables
// Get the connection string from the config file
// Create Try Catch Finally block
// Create SQL parameters
.... etc
}
void MyMethod(String some_input)
{
if (some_input == null)
{
some_input = "";
}
}
void MyMethod(String some_input) {
if (some_input == null) {
some_input = "";
}
}
if fred==bill dosomethingtofred() else dosomethingtobill();
if (fred==bill) {
dosomethingtobill();
}
else {
dosomethingtofred();
}