我在我工作的地方是一个单独的商店,当我在那里开始时,我没有经验,并且从低于标准的计算机科学学院获得学士学位。最重要的是,我在公司的第一个项目不仅涉及制定好的设计原则,还涉及学习一门新语言。毋庸置疑,我的代码在开始时很糟糕,从那时起我添加的所有新功能都被破解了所有那些糟糕的代码。令我惊讶的是,我的软件和它一样好用。
我在工作期间学到了TON,我很想重构我的代码,使其更具可读性,以便未来的新员工可以深入了解并帮助我。我也非常希望能够更轻松地添加新功能,而无需一起破解内容。我认为学习像Prism for WPF / Silverlight这样的框架会很有用,但是我有一个很大的待办事项列表(因为我是一个单独的商店),看起来它需要相当长的时间只是为了学习如何使用它。
现在我已经阅读了一些关于Prism的内容,我知道它背后的基本原理。此外,编写我自己的代码并不难实现Prism用于的一些相同的东西。实际上我已经在某种程度上做到了这一点,并且我在使模块更加模块化方面取得了很好的进展。
我的问题是:我应该继续编写更多的基础设施代码,这些代码能够提供我所需要的内容,而不是更多,或者我应该花时间学习像Prism这样的东西吗?或者可能会这样问:我是否应该花时间编写自己的简单自定义解决方案,还是应该花时间尝试掌握可能比必要更复杂的丰富,庞大的框架?在做出决定时我应该考虑哪些因素?
答案 0 :(得分:5)
我为最近的项目编写了自己的PHP MVC框架,正是我需要的。它充满了乐趣,教会了我很多,而且整体体验很好,而且我永远不会再这样做了。虽然这是一个极好的次要分心项目,但它在主项目上的工作效率大大降低了。
实际上,很大程度上取决于您需要开发多少基础设施。如果它只是一小部分,不会超过一两个小时,那就去吧。如果需要花费大量时间,请使用其他人的工作,继续前进,并完成项目。
答案 1 :(得分:4)
根据您提供的背景 - 大多数是自学成才,没有同行讨论您当前的发展 - 您应该绝对查看其他库和工具。至少,获得新的输入如何设计代码并解决问题。你可能觉得自己已经取得了一些成就 - 而且你已经取得了成就,但是这是一个高原,而不是最高峰。
“我没时间学习新东西,因为我有很多工作要做”
- 这就是我在你的理由中读到的更多代码。
这是一个警示标志 - 你正在将自己置于一个危险的位置。没时间学习?没时间记录?没有时间考虑所有影响?没时间做对了吗?没时间培训新员工?没时间叫它一天?
你不会通过学习棱镜或任何其他图书馆来解决这个问题,但这是错误的理由。
第三,代码让你陷入困境。拥有更多维护代码会让您变得更慢。一个人创业公司每天可以创造数百甚至数千个LOC,持续数天和数周。随着项目和组织变得越来越大,最终平均只有几十个。
根据个人经验的建议:编写建筑块,而不是框架。当您必须反复使用不同的公司徽标制作相同的应用程序时,框架非常棒。或者,正如TDWTF的亚历克斯所说,the key is in the differences没有相似之处。
我不希望你停止编写代码,远离它。但是你正在讨论权衡问题,根据你提供的信息,我建议你最重视学习新事物。
答案 2 :(得分:2)
如果您的写作将会在一段时间内完成,并且必须进行维护,特别是其他开发人员,那么花在学习和集成标准框架上的任何时间都是值得的。
它将提供有关如何编写应用程序的文档,并且任何熟悉该框架的开发人员都能够更快地获取它。它应该减少您必须编写的代码量,并帮助您专注于您的特定业务问题,而不是编写应用程序的管道。
答案 3 :(得分:1)
核心问题是,您将重复使用该框架多少次,每次重新实现类似内容的工作都会节省您的时间?请记住,你从头开始编写的东西,如果它应该是任何好的东西,都必须进行测试,针对不同的环境(客户端和c)进行验证,并保持 - 所有会给你的东西“免费” “通过使用良好,积极维护的框架。
如果您只使用该框架几次,也许净回报仍然支持从头开始重写 - 但如果框架覆盖了您需要的字段,而不仅仅是几个案例,学习使用框架的投资回报(假设它有任何好处! - )vs从头开始重做的事情将是非常积极的!
答案 4 :(得分:1)
所以如果我是你,不要在那里花太多时间。也许1或2年后,找到一个有一些有才华的开发人员的工作。你将在5年内成为一个更好的开发者。我知道我是因为我的举动。
答案 5 :(得分:1)
我会扮演逆向者:YAGNI(你不会需要它)。
如果框架
怎么办?框架的讨论经常假设框架很棒,现实情况是框架就像其他任何东西一样变化,而且许多框架都是你永远不需要的东西。
以下是我希望对您提出的更具体问题的一些建议:
继续进行增量改进。听起来你用这种方法很有效率,并且它为你付出了代价。
了解有关该框架的更多信息。或者多个框架。也许你可以在1到4天内尝试一个小型试点项目。
了解框架并不是为了使用框架是一种光荣的策略,而是为了挑选最好的创意并将其应用到您自己的设计中。
如果您决定暂时不采用框架,这是一个稍后重新审视的简单决定。如果您决定采用框架,以后退出它可能会非常昂贵。可能需要预先支付一些额外费用以减少造成非常昂贵的错误的可能性。
我认为我被烧的最多的地方取决于别人的代码基础,而这些代码库已经从我身下发生了变化。我称之为“我写过的每个Perl脚本都在一年后被破坏”的问题。但是我在许多不同的小项目上工作,这些小项目往往会得到突发的关注,并且与创建一个项目所花费的时间相比具有很长的生命周期。如果您每天都有一个大型项目,那么您可以更轻松地适应外部框架的变化。
答案 6 :(得分:0)
谁拥有该工具?
每次我需要解决所有问题时,这就是我对自己的要求。这是评估开发工具所需工作量的主要因素。
在启动大型项目时,每个人都定义众所周知的(在项目范围内)有用的语句;想要扩大抽象层取决于问题的频率,问题解决方案的重要性,努力来开发解决方案。