我无法跟踪我的PHP Web应用程序的流程,因此变得越来越难以使用


14

我已经编程了几年,并且随着时间的流逝对C#和JavaScript变得非常熟悉。我有一些较大的C#和JavaScript项目,可以轻松浏览。我最近开始了一个PHP&AngularJS项目,该项目以前没有使用PHP的经验。

PHP方面的流程变得越来越难以跟踪(JavaScript方面更大,但很容易实现),当我尝试通过它进行思考时,我想象一个纠结的线程。一开始我犯的主要设计错误就开始堆积起来,影响着我的设计。实施任何新技术都将花费越来越长的时间。

我的工作期限很紧,发现编写好的DRY SOLID代码变得越来越困难。随着设计时间的增加,复制/粘贴代码块以使其行为略有变化变得越来越具有吸引力。每当我必须进行上下文切换(从一个项目然后回到这个项目)时,也需要很长时间才能回到代码库,每当我回到该项目上工作时,我都会感到恐惧。

我可以采取什么步骤来解决这个问题?另外,还可能需要花费额外的时间来证明其合理性,因为我的老板不是开发人员,也不熟悉开发或软件的生命周期,因此解释起来可能比平时更为困难。


4
t

1
感谢@gnat但是,我对为老板辩护的兴趣不如我想出如何实际解决问题的兴趣。如果我不知道识别和更改问题的好方法,向老板提个案是没有用的。
道格拉斯·加斯凯尔

Answers:


11

您正在承担技术债务。您越用期限来证明草率的代码,越多的期限将使您实现的目标越来越少。

了解您可以完全摆脱这种情况。没有人会把你弄得一团糟,把你踢出去。您只是被杂乱包围的一天唤醒。

到那时,您将更新履历表并使之成为我的问题,或者您决定还清债务并花一些时间来清理代码。

如果您去打扫卫生,那就知道这与“花更多的时间在设计上”无关。这是关于打破一些懒惰的习惯并清除垃圾。

扔掉肮脏的代码批发是一个坏主意。不是因为其中涉及的工作,而是因为工作代码捕获了一个想法。在删除脏代码之前,请将其转换为干净代码。

进行单元测试可以帮助解决此问题,但是如果您以谨慎的态度创建测试,则可能还需要修复。

不要僵化。如果您无法更改,则说明它不是软件。


1
“没人会把你弄得一团糟,把你踢出去。” ...除非您进行代码审查。;)
jpmc26 2016年

1
@ jpmc26如果您认为代码审查将使您免于这种命运,那就错了。代码审查仅在您愿意向他人学习时才对您有所帮助。当您专注于截止日期时,情况并非如此。工作混乱的代码将一次又一次地击败观点。我已经看到经理们将这些争议解决了四分之一。如果您不在乎质量,那么没有人可以将其拖出您。不要以为你可以依靠别人来避免混乱。如果涉及到这一点,他们只会指派您更新文档。
candied_orange

如果您阅读我的评论并以为我在说代码审查就像独角兽和彩虹一样神奇,它们将不费吹灰之力就能解决所有问题,那么您就很容易出错。但是他们确实给某人机会让您大声疾呼。
jpmc26 '16

1
@ jpmc26如果您阅读了我的回答并认为我在说放弃希望是没有希望的,那么您肯定会犯错。我呼吁程序员对干净的代码承担个人责任,而不是依靠任何过程来实现它。一件事情很重要。您要么在乎,要么不在乎。
candied_orange

当然,但是即使是最好的程序员也会时不时地做出愚蠢的决定。与他人进行代码审查可以使您有机会将代码置于可以更早捕获到其他人的面前。这就是重点。这是很难看到自己的问题点,直到你真正尝试改变一些东西,它变得困难。当然,如果您不在乎,代码审查和任何其他技术都没有用。
jpmc26 '16

9

实施任何新技术都将花费越来越长的时间。

这是你的理由。精疲力尽,吃些乌鸦,并解释为什么事情需要更长的时间,并且您需要花一些时间进行重构和重新设计系统。

如果您不这样做,则需要在最低点上逐步进行重构。任务所需的时间已经比您想要的要长-每次触摸代码库尝试做得更好时,都需要花费一些额外的时间。添加集成测试。提取一个抽象。

对“我如何重构一个大型项目?”的愚蠢回答。是“一次一件”。

编辑

正在阅读相关文章,并发现了该博客文章:http : //ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/TLDR:不要尝试在项目中创建巨大的重构“阶段”;它不可能得到项目业主买入,你会在你的选择将左右制导什么时,你有足够的时间来解决。相反,请花一些时间进行每个新的更改或错误修正,以消除当前正在使用的代码。有机会解决时,不要让气味残留。


3
这正是我过去对遗产所做的。妙处:一旦您找到了转折点,该项目便开始像仙尘般发光。
qwerty_so

-2

Sonarqube支持PHP,因此您可以帮助跟踪当前的债务和新的泄漏。http://docs.sonarqube.org/display/PLUG/PHP+Plugin

使用Drupal进行实时采样https://sonarqube.com/dashboard?id=drupal


1
遗憾的是,我无法在工作设备上安装JVM。否则,这看起来像是个很棒的工具。
道格拉斯·加斯凯尔

对于开发人员工作站而言,这太过苛刻了。
阿基米德·特拉哈诺

我没有本地管理员,任何安装权限或任何未列入白名单的应用程序的运行权限。过去更糟....可悲的是。
道格拉斯·加斯凯尔

不能说我很同情,但我确实很同情。
阿基米德·特拉哈诺

被否决,因为它只是广告/工具链接,而不是OP问题的答案。
詹姆斯·斯内尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.