我是一个业余爱好者程序员(开始使用VBA使excel更快)并且一直在使用VB.NET/C#.NET并且正在尝试学习ADO.NET.
编程总是让我感到沮丧的是"好"的样子?我不是专业人士所以没有什么可比的.是什么让一个更好的程序员?是吗:
他们对给定语言中的所有对象/类/方法有了更好的理解?
他们的节目更有效率?
他们的程序设计在更好的文档,更好的函数名称选择等方面要好得多?
换句话说,如果我要查看专业程序员的代码,我会注意到他们的代码相对于我的第一件事情是什么?例如,我读过Wrox出版社的"Professional ASP.NET"等书.该书中的代码示例是"世界级"吗?那是巅峰吗?任何一位高级程序员都会看看那段代码并认为它是好代码吗?
下面的列表并不全面,但这些是我在考虑您的问题时所考虑的事情.
好的代码组织得很好.类中的数据和操作适合在一起.类之间没有无关的依赖关系.它看起来不像"意大利面条".
好的代码注释解释了为什么事情没有完成.代码本身解释了做了什么.评论的需求应该是最小的.
好的代码对除了最瞬态的对象之外的所有对象使用有意义的命名约定.某事物的名称是关于何时以及如何使用该物体的信息.
好的代码经过了充分的测试.测试用作代码的可执行规范及其使用示例.
好的代码不是"聪明".它以直接,明显的方式做事.
良好的代码是在易于阅读的小型计算单元中开发的.这些单元在整个代码中重复使用.
我还没看过,但是我打算在这个主题上读到的书是罗伯特C.马丁的清洁代码.
你要注意的第一件事是他们的代码遵循一致的编码风格.他们总是写相同的结构块,虔诚地缩进并在适当的地方进行评论.
你要注意的第二件事是他们的代码被分割成小方法/函数,最多不超过几十行.它们还使用自描述方法名称,通常它们的代码非常易读.
你注意到的第三件事是,在你对代码搞砸之后,逻辑很容易理解,易于修改 - 因此易于维护.
之后,您将需要一些软件设计技术方面的知识和经验,以了解他们构建代码体系结构所需的具体选择.
关于书籍,我没有看过很多书,其中的代码可以被认为是"世界级的".在书中,他们主要尝试提供简单的例子,这些例子可能与解决非常简单的问题有关,但不能反映更复杂的情况.
引用福勒,总结可读性:
任何傻瓜都可以编写计算机可以理解的代码.
优秀的程序员编写人类可以理解的代码.
'nough说.
就个人而言,我不得不引用Tim Peters的"The Zen of Python".它告诉Python程序员他们的代码应该是什么样子,但我发现它基本上适用于所有代码.
美丽胜过丑陋.
显式优于隐式.
简单比复杂更好.
复杂比复杂更好.
Flat优于嵌套.
稀疏优于密集.
可读性很重要.
特殊情况不足以打破规则.
虽然实用性胜过纯洁.
错误不应该默默地传递.
除非明确沉默.
面对模棱两可,拒绝猜测的诱惑.
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
虽然这种方式起初可能并不明显,除非你是荷兰人.
现在比永远好.
虽然从来没有经常好过正确的现在.
如果实施很难解释,这是一个坏主意.
如果实现很容易解释,那可能是个好主意.
命名空间是一个很棒的主意 - 让我们做更多的事情吧!
代码是诗歌.
从这一逻辑点开始,您可以获得许多令人满意的代码质量.最重要的是,观察代码的读取远远超过它的编写,因此为读者编写代码.为读者重写,重命名,编辑和重构.
关于推论:
读者将在代码创建日期的时间n.为读者编写代码的收益是n的单调递增函数.第一次查看代码的读者由n ==无穷大表示.
换句话说,从编写代码到重新访问代码的时间间隔越大,您就越会感激您为读者写作的努力.此外,您将代码移交给的任何人都将从以读者编写的代码作为最重要的考虑因素中获益.
第二个推论:
不考虑读者而编写的代码可能不必要地难以理解或使用.当读者的考虑因素降到某个阈值以下时,读者从代码中获得的值比通过重写代码获得的值少.当发生这种情况时,先前的代码被丢弃,不幸的是,在重写期间重复了很多工作.
第三个推论:
已知推论二在一个恶意循环中重复多次,这个恶性循环包括强制重写的代码.
我已经编程了28年,我觉得这个问题很难回答.对我来说,良好的代码是一个完整的包.代码干净利落,具有有意义的变量和方法名称.它有很好的评论意见,可以评论代码的意图,而不仅仅是反思你已经阅读过的代码.代码以有效的方式完成它应该做的事情,而不浪费资源.它还必须着眼于可维护性.
但最重要的是,它对不同的人意味着不同的东西.我可能将其标记为其他人可能讨厌的优秀代码.好的代码将有一些共同的特征,我认为我已经在上面确定了.
你能做的最好的事情就是让自己暴露在代码中.看看其他人的代码.开源项目是一个很好的来源.你会发现好的代码和糟糕的代码.你看的越多,你就越能认识到你认为好的代码和糟糕的代码.
最终你将成为自己的判断者.当你找到喜欢采用它们的风格和技术时,随着时间的推移,你会想出自己的风格,随着时间的推移会发生变化.这里没有人可以挥动魔杖,说出什么是好的,其他任何事情都是坏的.
阅读"代码完成"一书.这解释了很多关于如何构造代码的想法以及这样做的原因.阅读它应该缩短你的时间来获取必要的经验,从而告诉我们好的坏事.
http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1229267173&sr=8-1
我已经编程了将近10年,并与其他人一起工作,我可以毫无偏见地说,优秀程序员和普通程序员代码之间没有区别
所有程序员都在一个称职的级别:
正确评论
结构有效
清洁文件
我曾经无意中听到一位同事说:" 我一直都很态度和理性.我认为这就是我喜欢开发的原因 "
在我看来,这是普通程序员的头脑.在规则和逻辑方面看世界并在设计和编写程序时最终遵守这些规则的人.
专家程序员,理解规则,也理解他们的背景.这最终导致他们提出新的想法和实现,这是专家程序员的标志.编程最终是一种艺术形式.
简而言之,一个好的程序员代码可以被阅读和理解.
在我看来,一个优秀的程序员代码是语言无关的 ; 无论使用何种编程语言,都可以在很短的时间内以最少的思维阅读和理解编写良好的代码.无论代码是Java,Python,C++还是Haskell,编写良好的代码都可以被那些甚至没有使用该特定语言编程的人理解.
易于阅读的代码的一些特征是,命名良好的方法,没有"技巧"和错综复杂的"优化",类是精心设计的,仅举几例.正如其他人所提到的,编码风格是一致的,简洁的和直截了当的.
例如,前几天,我正在查看TinyMCE的代码,以回答Stack Overflow上的一个问题.它是用JavaScript编写的,这种语言我几乎没用过.然而,由于编码风格和包含的注释,以及代码本身的结构,它是相当容易理解的,并且我能够在几分钟内浏览代码.
在阅读优秀程序员代码方面,一本令我大开眼界的书是Beautiful Code.它有许多由各种编程语言的各种编程项目的作者编写的文章.然而,当我阅读它时,我能理解作者在他的代码中写的是什么,尽管事实上我甚至从未使用那种特定的语言进行编程.
也许我们应该记住的是,编程也是关于通信,不仅是计算机而是人,所以优秀的程序员代码几乎就像一本写得很好的书,可以向读者传达它想传达的想法. .
易于阅读
容易写
易于维护
其他一切都是花丝
应该很容易理解好的代码.
应该评论得很好.
困难的部分应该更好地评论.