fay*_*aya 11 c++ design-patterns
我是专业发展的新手.我的意思是我只有5个月的专业开发经验.在此之前,我自己或在大学学习.所以我在查看问题,并在此处找到有关代码质量的问题.我自己也得到了一个与之相关的问题.如何提高我的代码理解/阅读技巧?它还会提高我写的代码质量吗?是否有比匈牙利语更好的代码符号?是否有任何非常好的C++设计模式书籍(或者语言无关紧要?)?感谢您提前回答这些问题并帮助我改进:)
PS - 我也忘了告诉你我正在用C++和C#语言开发.
Eth*_*man 18
我发现只有这样才能更好地阅读其他人的代码,并且阅读其他人的代码,当你找到一个你不理解的方法或语言结构时,查看并使用它直到你明白了什么上.
匈牙利的符号很糟糕,今天很少有人使用它,它更像是程序员之间的一个笑话.
事实上,匈牙利名称是一个笑话本身就是:
"对于许多人来说,匈牙利语这一术语是令人难忘的,因为不可发音的辅音字符串模糊地类似于一些东欧语言的辅音丰富的正字法."
"匈牙利表示法是源代码混淆技术的战术核武器;使用它!由于这个成语污染了大量的源代码,没有什么能比计划好的匈牙利表示法攻击更快地杀死维护工程师."
在这件事上,人们常常会说几句话.
"将函数类型编码到名称中(所谓的匈牙利表示法)是脑损坏的 - 编译器无论如何都知道类型,并且可以检查这些类型,它只会让程序员感到困惑."
编辑:
来自Tobias Langner的评论.
"对于Apss Hungarian和Systems Hungarian之间的差异,请参阅Joel on Software ".
Joel on Software提供了有关如何阅读其他人代码的提示,称为阅读代码就像阅读Talmud一样.
Ahm*_*eed 13
如何提高我的代码理解/阅读技巧?
阅读阅读.从错误中吸取教训.在SO和其他地方查看答案.当你可以回想一下你写的一段代码并且去"啊哈!我应该完成xyz!" 那你就是在学习.阅读一本好书,选择您的语言,超越基础知识,了解更多高级概念.
然后,除了阅读:写写写!编码就像数学:你不会在没有实际解决问题的情况下完全克服它.瞥一眼数学问题的解决方案不同于拿出一张白纸并自己解决.
如果可以的话,也可以进行一些配对编程,看看其他人如何编码和反复思考.
它还会提高我写的代码质量吗?
往上看.随着您的进步,您应该提高效率.阅读有关设计模式的书不会发生这种情况.它将通过解决现实世界问题并理解为什么你所阅读的作品来实现.
是否有比匈牙利语更好的代码符号?
这取决于.通常我会避免它们并使用描述性名称.我可能使用匈牙利语符号的一个例外是UI元素,例如Windows窗体或ASP.NET控件,例如:使用btn作为提交按钮(btnSubmit)的前缀,使用文本框的txt(txtFirstName),以及等等,但根据所使用的方法和模式,项目与项目不同.
关于UI元素,有些人喜欢按字母顺序排列,可能会在最后添加控件类型,因此前面的示例分别成为submitButton和firstNameTextBox.在Windows窗体中,许多人将表单命名为frmMain,这是匈牙利语,而其他人则更喜欢根据应用程序名称或表单目的命名它,例如MainForm,ReportForm等.
编辑:请务必查看@Tobias Langner在对早期回复的评论中提到的Apps Hungarian和Systems Hungarian之间的区别.
Pascal Case通常用于方法名称,类和属性,其中每个单词的首字母大写.对于局部变量,通常使用Camel Case,其中第一个单词的第一个字母是小写,后续单词的首字母大写.
您可以从.NET Framework设计指南中查看命名约定等.有一本书,其中一些是在MSDN上.
是否有任何非常好的C++设计模式书籍(或者语言无关紧要?)?
设计模式应适用于任何语言.一旦理解了该模式的实用背后的概念和推理,您就应该能够以您选择的语言应用它.当然,不要以"一成不变"的态度对待一切; 模式是目标,语言之间的实现可能略有不同,具体取决于您可以使用的语言功能.以Decorator模式为例,看看C#扩展方法如何允许它以不同于它的方式实现.
设计模式书:
Head First Design Patterns - 使用Java的初学者简介,但是C++和C#代码可以下载(参见本书网站上的 "书籍代码和下载"部分)
设计模式:可重复使用的面向对象软件的元素 - 经典的四人组(GOF)
企业应用程序架构模式 - Martin Fowler
如果您正在寻找C++和C#中高质量编码的最佳实践,那么请查找" Effective C++ "和" More Effective C++ "书籍(Scott Meyers)和" Effective C# "和" More Effective C# "书籍(Bill瓦格纳).他们不会牵着你的手,所以你应该对语言有所了解."有效"系列中还有其他书籍,因此请确保您了解适用于您的语言的内容.
我相信你可以在这里搜索其他推荐的阅读,所以我会在这里停下来.
编辑:在匈牙利表示法问题下添加了更多细节.
osi*_*2is 10
我不能为其他人说话,但根据我的经验,我发现我学到的关于使可读性和/或更好的代码更好的方法是阅读(并最终清理)很多其他人的代码.有些人可能不同意我,但我认为这是非常宝贵的.这是我的推理:
当你开始编程时,很难确定什么是废话而不是垃圾与好.在制作优秀的代码时具有逻辑性,理性和极其聪明的帮助,但即使这些因素也不总是有所贡献.通过阅读其他人的作品和做肮脏的工作,你将体验到哪些有效,哪些无效.最终,你将能够精神上导航其他人必须穿越的雷区,你将准备避开那些相同的雷区.
通过阅读其他作品,您可以深入了解他们的思想以及他们如何解决问题.仅从建筑或技术方面来说,无论他们的战术是好还是坏,这对你都非常有用.通过阅读其他人成功或不成功的实施,你已经获得了这些知识,而没有花费他们学习它的实际时间.
设计模式非常有用.只有时间和经验可以帮助您了解适合哪个问题的模式.再次,如果他们已成功构建了一些可能对您有用的模式,请阅读其他人的代码.
当处理人们工作不足的极端问题时,你学会研究并深入研究你正在使用的任何系统/语言/平台/框架的内部.当其他所有方法都失败时,这种研究能力对你自己非常有用.但是你永远不会知道什么时候开始寻找或者直到你完成其他人的工作.好的代码或坏的,它在某种形式或时尚中都是有价值的.
所有这些符号,格式和术语都很有用,但可以很快地学习或实施,并且它们的收益相当可观.通过阅读其他人的代码,您将开发自己的逻辑风格.当您遇到其他人的工作以及需要花费大量精力进行阅读时,您将了解要避免的逻辑陷阱,以及下次自己实施的内容,甚至更快地修复错误代码的方法.
我从未觉得自己是一个优秀的程序员.不是说我也是一个坏人,但我对自己的能力充满信心,因为我的经验教会了我很多,而且我适应各种情况的能力使我成为一名可靠的程序员.从其他人的学习和他们的代码已经帮我.无论他们的工作是好还是坏,总有一些东西可以从他们身上获取,他们的经验,将它添加到你的记忆,知识等等.
请其他人阅读您的代码! 试着看看你是否有同事和类似的同事与你进行代码审查.让其他人梳理您的代码并向您询问有关您的代码的问题将为您的风格和技术提供新的见解和批评.从错误和其他方面学习.
小智 6
为了给你一点鼓励,我已经做了30年的专业程序员,我仍然觉得阅读其他人的代码非常困难.遗憾的是,其主要原因是代码的质量遵循鲟鱼法 - 其中90%是废话.所以如果你发现它很艰难,不要认为这是你的错!
| 归档时间: |
|
| 查看次数: |
10161 次 |
| 最近记录: |