【问题标题】:Writing extra code to avoid learning new frameworks编写额外代码以避免学习新框架
【发布时间】:2010-03-10 06:52:33
【问题描述】:

我在我工作的地方是一家单人商店,当我从那里开始工作时,我的经验为零,并且获得了一所低于标准的计算机科学学院的学士学位。最重要的是,我在公司的第一个项目不仅涉及找出好的设计原则,还涉及学习一门新语言。不用说,我的代码一开始就很糟糕,从那以后我添加的所有新功能都被黑在了所有这些糟糕的代码之上。令我惊讶的是,我的软件运行良好。

我在工作期间学到了 TON,我渴望重构我的代码以使其更具可读性,以便未来的新员工可以潜入并帮助我。我也真的很想让添加新功能变得更容易,而不必把东西拼凑在一起。我认为学习 Prism 之类的 WPF/Silverlight 框架会很有用,但是我有一个庞大的待办事项列表(因为我是一个单人商店),而且看起来需要相当长的时间只是为了学习如何使用它。

现在我已经阅读了一些关于 Prism 的内容,了解了它背后的基本原理。此外,编写我自己的代码来完成与 Prism 相同的一些事情并不难。实际上,我已经在某种程度上做到了这一点,并且在使事情变得更加模块化方面取得了良好的进展。

我的问题是:我应该继续编写更多的基础架构代码,只提供我所需要的,而不是更多,还是应该花时间学习像 Prism 这样的东西?或者也许可以这样问:我应该花时间编写自己的简单自定义解决方案,还是应该花时间尝试掌握一个可能比必要更复杂的丰富、庞大的框架?在做出决定时我应该考虑哪些因素?

【问题讨论】:

    标签: time frameworks


    【解决方案1】:

    我为最近的一个项目编写了自己的 PHP MVC 框架,而这正是我所需要的。这很有趣,教会了我很多东西,整体体验很好,我永远不会再这样做了。虽然是一个出色的次要分心项目,但它极大地降低了我在 main 项目上的工作效率。

    真的,这在很大程度上取决于您需要开发多少基础设施。如果只是一点点,不会超过一两个小时,那就去吧。如果需要花费大量时间,请使用其他人的工作,继续前进,然后完成您的项目。

    【讨论】:

      【解决方案2】:

      根据您提供的背景 - 主要是自学成才,没有同行讨论您当前的发展 - 您应该绝对查看其他库和工具。至少,获得如何设计代码和解决问题的新输入。你可能会觉得你已经取得了一些成就——恭喜你已经取得了成就——但这是一个平稳期,而不是高峰期。

      “我没有时间学习新东西,因为我有很多事情要做”
      - 这就是我在你的理由中读到的更多代码。 这是一个警告信号——你正在将自己移动到一个危险的位置。没时间学习?没时间记录?没有时间考虑所有的影响?没时间做对吗?没时间培训新员工?没时间收工?

      你不会通过学习 prism 或任何其他库来解决这个问题,但这是错误的理由。

      第三,代码让你陷入困境。有更多的代码需要维护会让你变慢。一个人的初创公司每天可以生产数百甚至数千个 LOC,持续数天和数周。随着项目和组织变得越来越大,您最终平均会有几十个。

      作为个人经验的建议:编写构建块,而不是框架。当您必须一遍又一遍地使用不同的公司徽标制作相同的应用程序时,框架非常有用。或者,正如 TDWTF 的 Alex 所说,the key is in the differences 不是相似之处。


      我不希望你停止编写代码,远非如此。但是您正在讨论权衡取舍,根据您提供的信息,我建议您将重心放在学习新事物上。

      【讨论】:

      • 认为它是迫在眉睫的大恶魔... ;) --- 代码从来都不是完美的,但有些代码足够好,而很多代码却不够好。
      【解决方案3】:

      如果您编写的应用程序将存在一段时间并且必须维护,尤其是由其他开发人员维护,那么花时间学习和集成标准框架都是值得的。

      它将提供有关如何编写应用程序的文档,任何熟悉该框架的开发人员都可以更快地掌握它。它应该减少您必须编写的代码量,并帮助您专注于特定的业务问题,而不是编写应用程序的管道。

      【讨论】:

        【解决方案4】:

        核心问题是,您将重复使用多少次框架,从而节省每次重新实现类似东西的工作?请记住,您从头开始编写的东西,如果它应该有任何好处,则必须针对不同的环境(客户端和c)进行测试、验证和维护——所有这些东西都会“免费”提供给您使用良好的、积极维护的框架。

        如果您只打算使用该框架几次,那么净回报可能仍然有利于从头开始重写——但如果该框架涵盖了您在不止几次情况下需要的领域,学习使用框架的投资回报(假设它有任何好处!-)与从头开始重做的事情将是非常积极的!

        【讨论】:

          【解决方案5】:

          我大学毕业时也遇到过类似的情况。我在这家小公司工作了大约 1.5 年,收到了一家大公司的邀请。我学到的是(对你和其他人来说可能会有所不同):

          1. 刚毕业就在一家小公司工作是一个很棒的主意。我这样说是因为你必须戴很多不同的帽子。例如,您将编写代码、测试代码、部署代码、编写存储过程等。最终的结果是您熟悉从概念到任何东西的整个过程。我认为这种体验至关重要。
          2. 我喜欢编写代码。我记得我开车回家的日子,想想我花在处理生产支持问题上的日子。我花更多的时间来支持客户并编写我主要不是编写代码的“一次性”。
          3. 为大公司工作是大学的一个坏主意。当你在一家大公司工作时,他们会为你提供特定的角色,并且你有特定的界限。如果您是一家大公司的开发人员,您可能不会将应用程序部署到生产环境或调整存储过程。
          4. 在为小公司工作后,为大公司工作是一个好主意。那是因为如果你在小公司工作,它会迫使你学习更多的东西,而不仅仅是编码。如果你明白你会成为一个更好的开发者。
          5. 与优秀的开发人员合作会让你变得更好。当你和一群优秀的人一起工作时,你会变得更好。这是因为每个开发人员都有他们为团队带来的特定历史,并且你们都互相学习。我现在主要工作的小组中有:MSBuild 专家、Silverlight 专家和 F# 专家,以及其他好人。所以有些人向我学习 MSBuild,我也向他们学习。只与优秀的人交谈可以让你变得更好。

          所以,如果我是你,请不要在那儿花太多时间。也许 1 或 2 年之后,在某个拥有一些才华横溢的开发人员的地方找到一份工作。 5 年后你会成为一个更好的开发者。我知道我是因为我的举动。

          【讨论】:

            【解决方案6】:

            我会玩逆势:YAGNI(你不会需要它)。

            如果框架呢

            • 设计不好?
            • 有车吗?
            • 是不是太慢了?
            • 两年后不一样,老版本不支持了?

            关于框架的讨论通常假设框架很棒,但现实情况是框架与其他任何东西一样各不相同,而且许多框架都充满了你永远不需要的东西。

            以下是一些建议,希望对您更具体的问题有所帮助:

            • 继续进行增量改进。听起来您使用这种方法很有成效,而且它为您带来了回报。

            • 了解更多框架。或多个框架。也许您可以在 1 到 4 天内尝试一个小型试点项目。

            • 了解框架是一种光荣的策略,不是为了使用框架,而是为了挑选最好的想法并将它们应用到您自己的设计中。

            • 如果您暂时决定不采用框架,那么稍后再重新审视这个决定很容易。如果您决定采用一个框架,那么以后放弃它可能会非常昂贵。可能值得预先支付一些额外的费用,以减少犯非常昂贵的错误的可能性。

            我认为我最受打击的地方是依赖于我手下更改的其他人的代码库。我称之为“我曾经写过的每一个 Perl 脚本都在一年后被破坏”的问题。但是我从事许多不同的小项目,这些项目往往会引起人们的广泛关注,并且与创建一个项目所花费的时间相比,它们的生命周期很长。如果您有一个多年来每天都在处理的大型项目,那么您可以更轻松地适应外部框架的变化。

            【讨论】:

              【解决方案7】:

              谁有那个工具?

              这是我每次需要解决每个问题时都会问自己的问题。这是评估开发工具所需工作量的主要因素。

              在开始一个大型项目时,每个人都会定义众所周知的(在项目范围内)有用的语句;考虑扩大抽象层取决于问题的频率、问题解决方案的重要性、开发解决方案的努力

              【讨论】:

                猜你喜欢
                • 2022-12-03
                • 1970-01-01
                • 1970-01-01
                • 2016-08-21
                • 1970-01-01
                • 2011-03-22
                • 2018-01-27
                • 2014-05-08
                • 1970-01-01
                相关资源
                最近更新 更多