我看到这个问题有一些严重的问题。开始吧。
如何停止浪费时间设计建筑
这个问题颇为繁重。另外,您不设计架构。你是建筑师。体系结构和设计是互补的和相关的活动,但是即使它们可能重叠,也不相同。
同样,以相同的方式可以浪费时间进行架构(通过过度架构),也可以浪费时间进行过度设计和过度编码(通过以比必要的方式复杂得多的方式对内容进行编码,或者通过失败来完成)所需内容的代码。)
适当的体系结构旨在防止编码浪费。它通过限制,缩小和记录复杂系统的可能方式来做到这一点:1)设计,2)编码和测试,3)交付,4)维护,5)从故障中恢复以及6)最终退役。
我的经验是,那些只喜欢编码的人,他们只是编码而没有考虑系统的长期运行和维护方式,而是转到下一个炙手可热的土豆,留下了一些可怜的灵魂来维护丑陋的魔像。
但是我离题了...
这就是事实:对于足够简单的系统,体系结构是不言而喻的,源于合理的设计和实施实践。
它仅适用于涉及大量人员或系统级软件的大型系统,这些系统或系统级软件执行需要显式架构的非常复杂的工作。
我最近从uni毕业,开始从事程序员工作。我认为解决“技术性”问题或进行调试并不困难,我认为这只有一种解决方案。
这是该专业的最低要求,我很高兴您在做这些职业时没有问题(如果您这样做,我会很担心。)
但是似乎有一类问题没有一个解决方案
这些就是我们职业的基础,这是雇主愿意为我们支付(通常)高于平均水平的薪水的这类问题。
实际上,值得解决的问题是可以解决多个问题的问题。现实世界中的问题就是这样。作为软件开发人员,世界需要我们的专业知识来做出可接受的权衡。
-诸如软件架构之类的东西。
事物的体系结构是复杂系统的必然特征,无论是虚拟/软件还是在具体的世界中。每个运行,需要输入并产生输出的系统都将是复杂的并且具有体系结构。
当我们开发用于此类系统(银行系统,电力监控系统,门票销售系统等)的软件时,我们的目标是生产一款模仿该系统功能和要求的软件。
我们只是不能简单地为其添加翅膀并为其编码牛仔风格。我们需要某种架构。如果项目需要数十名工程师(甚至更多),则尤其如此。
这些事情使我困惑,使我感到极大的困扰。
那没问题。这不是一个容易学习或教导的主题,并非没有大量实践。
我花了数小时的时间来尝试确定如何“架构”我的程序和系统。例如,我是否将此逻辑划分为1或2个类,如何命名这些类,是否应将其设为私有或公开类,等等。这些问题占用了我很多时间,这使我感到非常沮丧。我只想创建程序,该死的架构。
不幸的是,那不是软件架构。
它甚至不是设计,而只是编码。我将在本文的底部提供一些建议。
我怎样才能更快地完成构架阶段并进入我喜欢的编码和调试阶段?
我很难找到答案的方法,因为这很令人激动。
我们是在努力完成工作,还是只是在享受练习?两者相同时很棒,但是在现实生活中,很多时候都不一样。
做我们喜欢的事情很棒,但是在像我们这样复杂的职业中,只专注于我们喜欢的事情,这对取得丰硕的职业不利。
您不会进步,不会成熟或不会获得新知识。
陆军中有这样一句话,“拥抱吸吮者”。
其他短语也有类似的建议。“如果不吮吸,那是不值得的”,而我最喜欢的是,“如果它吮吸(而且很重要),就做,直到它不再吮吸为止。”
我的建议:
在我看来,您仍在努力了解两者之间的区别
编码(如何编码您的类,模块或不编码,命名约定,访问可见性,范围等),
设计(多少层,前端/后端/ db,每层如何通信,去向何处)以及来自简单系统设计的隐式架构决策,
体系结构(在需要数千甚至数十万工时的复杂系统中发现)
因此,我建议您深入研究第一个主题(编码)以将其提升到一个新的水平。
清洁代码
罗伯特·“鲍伯叔叔”·马丁的《清洁法》是一个很好的起点。
软件凝聚力
另外,我建议您熟悉称为LCOM或LCOM4的特定的面向对象软件指标。
它可能是相当数学的,并且不是防弹的,但是您的目标应该是从经验上理解和检测(如果愿意,或者说是眼球)类是否具有内聚性或缺乏内聚性。
http://www.aivosto.com/project/help/pm-oo-cohesion.html#LCOM4
https://www.computing.dcu.ie/~renaat/ca421/LCOM.html
软件原理
这与我们都应该熟悉的“单一责任原则”或SRY 紧密相关。如果要精通编码,SRY是我们都需要熟悉的5种“固体”之一。
随着我们逐步了解SOLID原则,我们还需要熟悉“ GRASP”原则,该原则支配或指导我们如何编写类。
其他书籍
最后,我还建议以下几点:
这样,您应该掌握如何开始编码和设计,并通过实践来掌握和迁移(或至少掌握)软件体系结构。
我相信会有其他专业人士会加,减或反对这些建议。他们将提出其他建议,可能会根据自己的经验得到验证。
我只能说的是-没有捷径。
祝一切顺利。