我是一名有2年经验的Java程序员,我非常喜欢编程,特别是面向对象编程。如果我有一个项目,我会直接开始编程,而不进行任何系统分析操作,因此我的代码没有按照应该排序的方式排列。我想学习如何编写和设计良好的代码,我应该开始学习UML还是可以直接通过设计模式?最好的学习UML和设计模式的书籍是什么?
非常感谢您的时间。
我是一名有2年经验的Java程序员,我非常喜欢编程,特别是面向对象编程。如果我有一个项目,我会直接开始编程,而不进行任何系统分析操作,因此我的代码没有按照应该排序的方式排列。我想学习如何编写和设计良好的代码,我应该开始学习UML还是可以直接通过设计模式?最好的学习UML和设计模式的书籍是什么?
非常感谢您的时间。
然后,开始编写测试或可执行规范,并逐步改进代码以满足这些测试。将宏观设计作为指南,并参考测试。实践测试驱动开发。征求利益相关者的反馈。迭代。迭代。迭代。
(当然,这在很大程度上取决于您所做的应用程序类型,我假设是商业类的非安全关键软件)。
至于书籍,请查看“领域驱动设计”和“Growing Object Oriented Software, Guided by Tests”。
哦,永远不要从设计模式开始......
UML只是达到目的的一种手段,而且不是唯一的手段。你可以尝试使用它,看看自己是否喜欢。个人而言,我并不太喜欢它。你需要自己发现如何思考和设计应用程序。个人而言,我喜欢在白板上画框。
设计模式可能很有用,但它们描述的是更具体问题的解决方案。一个陷阱是,那些从设计模式开始的人会试图将其应用于任何地方。他们试图将设计模式与问题匹配,但实际上应该反过来。UML和设计模式并不是互斥的,它们也不一定服务于相同的目的。
就设计模式而言,我发现Head First Design Patterns是一本不错且易于阅读的书籍,尽管这非常主观,因为我知道很多人真的讨厌Head First系列书籍的写作风格。
UML是表示模型的一种方式,而不是替代模型的方式。模型可以用UML来表达,但不仅限于UML。
设计模式有助于创建合适的模型并避免常见错误。就个人而言,我发现Martin Fowler和Eric Evans的书非常有用,但我相信还有很多其他优秀的作者。
学习如何设计代码没有固定的方法,它需要经验。
15年以上的汇编/基础/Pascal/Java/C/C++/C#和其他无数种语言后,有时我的代码并不像应该(或可以)那样整洁,但我获得了很好的薪酬,并被普遍认为是一名优秀的程序员。
这背后有太多原因,紧迫的发布日期、技术发展过快、愚蠢的客户需求、只考虑可扩展性而不关注可用性的庞大框架(这甚至是一个英文单词吗)。
当我开始一个新项目时,第一件事就是喝杯咖啡。
然后我联系客户(或将使用应用程序的人),试图了解他们真正需要什么。理解客户的需求是真正的目标(当然,在得到报酬之后^^)
在此之后,我拿起铅笔和纸,不按照任何标准进行绘制。盒子、圆圈、箭头,带有注释,一种艺术性的头脑风暴。
设计模式...最好的方法就是避免使用它们。很多时候它们并不适用于实际问题,但全世界的程序员都在滥用它们,是的,主流技术导致了这种情况。但如果你确实有绝对的理由使用它们,那就从GoF大作开始(《设计模式:可复用面向对象软件的基础》:Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)。关于设计模式,最好的书籍是由四人组所著的《设计模式:可复用面向对象软件的基础》。该书的最新版本还包括了一本UML书籍。这两本书将是一个很好的开始。
然而,仅仅实现设计模式是错误的。当你想要学习编写和设计良好的代码时,理解何时使用模式(以及何时开发自己的模式!)是必须的。