编程设计模式
我正在努力寻找学习正确的软件工程设计的最佳方法,并希望能够帮助我指导一个万无一失的方法,在设计之前剖析一个项目,并找出最有用的设计模式应该被执行。我读过“四人帮”,但觉得它缺少一种确定的方式来选择给定软件的适当设计模式。编程设计模式
我不确定专业人员如何解决这个问题,但我相信这是通过多年的经验。然而,在我多年的编程之后,我还没有找到设计模式的发现过程。
感谢, 铝
在正确的时间选择正确的设计模式并将其应用于正确的场景始终是一项挑战。尽管设计模式应该被学习为理论,但是为什么会有这样的风格呢是人们有能力识别正确的技术决策的时间和地点。
对于一个学习者,我的建议是要了解模式和背后的概念;并通过给定的,可以理解的例子让他们更新。然后,在您的需求澄清或特征设计阶段(梳理/计划会话,如果它在敏捷上)或开发阶段(敏捷:在Sprint中),或者在代码审查阶段尝试查看编码设计和头脑风暴以找到任何匹配映射你已知的模式。通过实践和经验,这项技能将得到改善,之后它将成为一名工程师的无情情绪。
另外,研究设计模式最有可能应用的常见错误/问题;然后(无需重新发明)车轮,您可以在适当的情况下提前做出正确的技术决策,并提供正确的设计模式。
我曾经作为软件工程师拥有的一种做法是D3(设计驱动开发);在完整或JEDUF(Just-Enough-Design-Up-Front)完全完成之前,任何有效编码都不会开始(是的,不是一个单词!!)这意味着,在开始“有效”编码之前,您“准确”知道如何定义工作流程并通过适用模式进行布线等。(此外,此方法将大大缩短代码审阅时间)
所以我想说的是,这些问题是,你有多少模式符合他们的概念精神和你有多少技能来做出正确的判断,以便在正确的时间/地点到来时选择正确的模式。
干杯,D
感谢您的回答,正是我所寻找的。 – Almanz
如果你有兴趣的优秀的软件设计阅读: Domain Driven Design或Clean Architecture,或 Test Driven Design。 GoF描述的设计模式并不是指大型图片软件设计,而是如何解决某些背景下的常见问题。
请记住,软件设计不是一成不变的,都取决于上下文。主要目标是向用户提供请求(正确)的功能,使代码可测试,可维护,并且在时间和预算等特定限制内。在敏捷环境中,通常没有人会对其中的每个细节都进行整体设计,但软件体系结构在敏捷过程中出现。因此,熟悉Scrum,看板,极限编程等敏捷方法。
检查此youtuber他正在制作关于设计模式的播放列表。并有一个非常明确的消除:https://www.youtube.com/watch?v = v9ejT8FO-7I&list = PLrhzvIcii6GNjpARdnO4ueTUAVR9eMBpc –