PHP Webアプリのフローを把握できなくなったため、作業が難しくなっています


14

私は数年前からプログラミングを行ってきましたが、C#とJavaScriptに非常に慣れてきました。大規模なC#およびJavaScriptプロジェクトがいくつかありますが、問題なくナビゲートできます。私は最近、PHPの経験がなくても作業するためにPHPとAngularJSプロジェクトを開始しました。

物事のPHP側の流れを追跡するのが難しくなりつつあります(JavaScript側は大きくなりますが、簡単に処理できます)。私が始めたときに犯した主要な設計ミスは山積みになり始め、今後の設計に影響を与えています。新しいものを実装するには、ますます時間がかかります。

私は締め切りが厳しく、良い、乾いた、固い、コードを書くのがますます難しくなっています。コードのチャンクをコピー/貼り付けして、設計時間が長くなるにつれてその動作にわずかな変化を加えることがより魅力的になっています。また、コンテキスト切り替えを行う必要があるときはいつでもコードベースに戻るのに時間がかかります(あるプロジェクトからこのプロジェクトに戻る)。このプロジェクトに戻るときはいつでも恐怖を感じます。

これを解決するためにどのような手順を実行できますか?上司は開発者ではなく、開発やソフトウェアのライフサイクルに精通していないため、時間がかかる可能性があることも正当化する必要があります。そのため、説明は通常より難しい場合があります。



1
ありがとう、@ gnatただし、問題を実際に解決する方法を考え出すよりも、上司に意見を述べることに興味がありません。問題を特定して変更するための優れた系統的な方法がわからない場合、上司に意見を述べることは役に立ちません。
ダグラスガスケル

回答:


11

あなたは技術的な負債を引き受けています。締め切りでずさんなコードを正当化すればするほど、締め切りが増えて、達成度が低下します。

これを完全に回避できることを理解してください。誰もあなたを混乱させてあなたを追い払うつもりはありません。ある日、混乱に囲まれて目を覚まします。

その時点で、履歴書を更新して問題を解決するか、借金を返済してコードのクリーニングに時間をかけることにします。

クリーニングコースに行く場合、これは「設計にもっと時間をかける」ことではないことを理解してください。これは、いくつかの怠zyな習慣を破り、ゴミを取り除くことです。

汚いコードの卸売を捨てることは悪い考えです。そこに行った作業のためではなく、作業コードがアイデアをキャプチャするためです。汚れたコードを破棄する前に、アイデアをきれいなコードに移動してください。

単体テストがあるとこれに役立ちますが、同じ注意を払ってテストを作成した場合、混乱する可能性が高いため、修正する必要があります。

剛性に屈しないでください。変更できない場合は、ソフトウェアではありません。


1
「だれもあなたを混乱させてあなたを追い出すつもりはありません。」...コードレビューを行わない限り。;)
jpmc26

1
@ jpmc26コードレビューがこの運命からあなたを救うと思うなら、あなたは間違っています。コードレビューは、他の人から喜んで学ぶときに役立ちます。締め切りに集中するときではありません。動作する、乱雑な、コードは何度も意見に勝ちます。私はマネージャーが四半期を反転することでこれらの紛争を解決するのを見てきました。品質を気にしない場合、だれもそれをあなたの外にドラッグすることはできません。あなたが混乱を起こさないように他人に頼ることができるとは思わないでください。それに関しては、彼らはあなたにドキュメントの更新を任せるだけです。
candied_orange

私のコメントを読んで、コードレビューはユニコーンやレインボーのような魔法であり、努力や意欲なしにすべてを修正すると言っていると思ったら、あなたは信じられないほど間違っています。しかし、彼らは誰かにあなたに電話する機会を与えます。
jpmc26

1
@ jpmc26私の答えを読んで、あきらめるだけの希望はないと言っていたら、あなたは信じられないほど間違っています。私はプログラマに、それを実現するために何らかのプロセスに頼るのではなく、きれいなコードに対して個人的な責任を負うよう呼びかけています。ひとつだけが重要です。あなたは気にするか気にしません。
candied_orange

もちろん、最高のプログラマーでさえ、時々愚かな決定を下します。他の人とのコードレビューを行うと、コードを早期に発見できる他の人の前に置くことができます。それが全体のポイントです。それはだハード、あなたが実際に何かを変更しようと、それが困難になるまで自分で問題箇所を参照してください。もちろん、コードのレビューやその他の手法は、気にしないと役に立ちません。
jpmc26

9

新しいものを実装するには、ますます時間がかかります。

これはあなたの正当化です。「うんざりして、カラスを食べて、物事に時間がかかっている理由と、リファクタリングとシステムの再設計に少し時間をかける必要があることを説明してください。

そうしないと、少しずつリファクタリングする必要があります。タスクはすでに思っているよりも長くかかっています-コードベースに触れるたびに少し時間をかけて、何かを改善しようと試みます。統合テストを追加します。抽象化を抽出します。

「巨大なプロジェクトをどのようにリファクタリングしますか?」に対する愚かな答え 「一度に1枚」です。

編集

関連する記事を読んでいたが、このブログの記事に出くわした: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の質問への回答ではなく、ツールへの単なる広告/リンクであるため、ダウン投票されました。
ジェームズスネル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.