c# - source - visualstudio code terminal



重构代码:什么时候做? (7)

自从我开始使用.NET以来,我一直在创建Helper类或Partial类,以保持代码位于并包含在自己的小容器中等。

我想知道的是使代码尽可能干净和完美的最佳实践。

显然干净的代码是主观的,但我在谈论什么时候使用东西(不是如何使用它们),如多态,继承,接口,类以及如何更恰当地设计类(使它们更有用,而不仅仅是说' DatabaseHelper',正如一些人认为代码中的这种不良做法闻起来wiki )。

是否有任何资源可能有助于这种决策?

请记住,我甚至没有开设过CS或软件工程课程,而且教学资源在现实生活中相当有限。


有效地使用遗留代码是我在这个主题上看到的最好的书籍之一。

不要把这本书的标题放在一边 - 这本书不是将重构作为一种正式的概念(有它的位置),而是有很多很简单的“为什么我没有想到”的提示。 诸如“通过一个类并删除任何不直接在该类中实现并将它们放在另一个类中的方法”之类的事情。

例如,您有一个网格和一些代码来保持该网格的布局文件。 您可以安全地将布局持久代码移出到另一个类。


http://www.refactoring.com/有一个专门用于重构的http://www.refactoring.com/ 。 它提供了许多关于重构代码主题的更多资源的参考,以及讨论重构相关问题的邮件列表。

最后但并非最不重要的是,有一个很大(并且仍在增长)的重构目录,它远远超出了Martin Fowler在(非常推荐的)重构书中所写的内容。


我刚收到Code Complete的副本,发现有一节关于此。

虽然我仍然会阅读已接受的答案书,但Code Complete教给我的内容大大改善了我对设计课程的思考方式。

在今天之前,我不知道ADT是什么(抽象数据类型),现在我知道如何开发遵循封装的类。


我推荐Domain Driven Design 。 我认为YAGNI和AlwaysRefactor原则都是两个简单化的。 关于这个问题的古老问题是我将“if(someArgument == someValue)”重构为函数还是将其保留为内联?

没有是或否答案。 如果测试代表商业规则,DDD建议重构它。 重构不仅(仅)关于重用,而是关于使意图明确。




  • 在代码导致问题时重新考虑代码。 任何问题都会出现:性能,scallabillity,集成,维护 - 任何让你在应该花费更多时间的事情。 即使您不相信它是干净的或符合现代标准,它也不会破坏它。
  • 不要花太多时间使代码完美。 你永远不会达到完美,但你可以花很多时间尝试这样做。 记住收益递减规律。
  • 在实际处理依赖于它的功能时,项目内部只会重新考虑代码。 即如果您有用于迭代的用户故事调用“更改上载机制”或“修复文件上载中的错误”,您可以重新考虑文件上载代码。 但是,如果您的用户故事是关于“整理文件上传UI设计”,请不要进入业务逻辑。




coding-style