まず、私がこれまでに接したいくつかの古いプロジェクトの経験について話させてください。古いプロジェクトの場合、最初の接触プロセスでは、ほとんどの人が常に抵抗感を抱き、一部の人は軽蔑さえします。私はいつも、以前のコードに多くの問題を見つけてから、コードや以前の開発者について不満を言い始めるのが好きですが、憂鬱な苦情が続いた後、私は専門的な責任感を持ち、すべてを変えたいと考えています。良いと思う方法では問題が解決したので、次の仕事はコードをリファクタリングすることです。
おそらくほとんどの開発者はこれを経験したことがあると思いますが、この経験は苦いものです(なぜならリファクタリングは重要であるにもかかわらず、あまり評価されていないからです。現在、国内ではユーザビリティが重視されており、コードの品質は注目されていません。人々はそれに注目します)そしてそれはまた甘いものでもあります(嵐の後には必ず虹がかかります)。若い開発者にとって、虹を見るまでのプロセスは苦痛で長いものです。彼らは皆、経験に加えて、失敗を通じて成長します。これらの失敗は主に、成功を達成することに熱心すぎて、やみくもに再構築することが原因です。
視覚障害は主に以下に反映されます:
1. システム アーキテクチャ全体を明確に理解する前に、それを新しいテクノロジまたはアーキテクチャと考えられるものに置き換える必要があります。
2. 既存のシステムアーキテクチャやプログラムの欠点をまったく分析せず、ただ闇雲にデザインパターンについて話し、固有のデザインパターンのセットで再構築します(再構築では、それは参照としてのみ使用され、Aは使用されません) )
3. リファクタリングは比較的カジュアルで、各バージョンの開発はアーキテクチャを超えて、新しい設計アイデアを自由に取り入れます。
この種のやみくもな再構築は、システムにさらなる問題をもたらすでしょう:
リファクタリングを行うと、システムの運用効率が低下することがわかります。
システムを完全に理解していないため、リファクタリングに多くの重複コードを持ち込んでいます。
最も悲劇的なのは、リファクタリングされたコードが他の人からもゴミとみなされ、リファクタリングされてしまうことです。
それでは、どうすれば失明をなくすことができるのでしょうか。 ?
まず、現在のプロジェクトに問題があるかどうか、どのような問題があるのか、そしてそれらの問題が再構築によって解決できるかどうかを理解し、再構築する時間を会社から与える必要があります。上司はあなたのせいでそれをするわけではありません。強い依存性と偶然性の低さについては、問題を通してのみ上司に知らせる必要があり、あなたの仕事は問題を通してのみ得られるということです。これは非常に現実的な状況です。
次に、リファクタリング オブジェクトがアーキテクチャ用かローカル コード用かを判断し、理想的な目標を設定する必要があります (なぜ理想的なのか? 1 つのステップで正しく行うことはできないため、理想と現実の間にはギャップがあります) , しかし、私たちがしなければならないのは、理想に近づくために最善を尽くすことです)。
アーキテクチャをリファクタリングしている場合、これは簡単な作業ではありません。実際に始める前に、次のことを行う必要があります。
1. 以前のアーキテクチャ/技術的背景やビジネス要件を含む、システムの過去に関する包括的な理解
2. 保守性の低さ、既存のニーズを満たさなくなった側面など、以前のアーキテクチャの問題を分析します。
3. コア コードの少なくとも 80% を確認する。以前のコードに基づいて、一定期間実際のコーディング経験があることが最善です。
上記の点を行う目的は、明確に理解し、自分自身と敵について知ることです。次は実質的な段階に入ってもいいでしょうか?いいえ、非常に重要なことがまだ 1 つありません。それは再建計画です。
この種の大規模なリファクタリングでは、実際の状況では、通常、上司から与えられた時間と実際にリファクタリングに必要な時間は大きく異なるため、リファクタリング作業を後で遅らせる必要があります。再構築と新しい要件の開発が必要であり、この作業は 1 人の作業ではなく、複数の人の協力が必要となるため、共通の目標に加えて、一定のレビューのメカニズムも必要です。リファクタリングの方向が一貫していることを確認するなど。これらの要素の下でリファクタリングを適切に行うことが、リファクタリング計画が必要な理由です。
ローカル コードをリファクタリングする方がはるかに簡単かもしれませんが、注意する必要があるのは、既存のアーキテクチャの考え方に従い、その範囲内で考える必要があるということです。
これを行うには非常に重要な考え方があります:
1. 物事の本質とは何か、物事の外部環境は何かを分析するのが得意です。
2. さまざまなものの中から共通点を見つけ、その共通点を抽象化します (簡単な例を挙げると、BMW とアウディの場合、それらを車に抽象化する必要があります)。
なぜこんなことを言うのかというと、これらはコードのリファクタリングに必要なものをもたらす可能性があるからです:
1. コードの作成プロセスにおける依存関係を削減します。
2. 抽象的なものは再利用可能です
上記をすべて実行すると、リファクタリングが完了したことになります。不可能です。これは良いスタートにすぎません。アジャイルで述べたように、継続的なリファクタリングを実現する必要があります。
プロジェクトマネージャーは各バージョンサイクルにこの時間を与えないので、それは非現実的だと考える人もいるかもしれません。実際、私は混乱しています。 ! 1 週間以上かかると予想している場合、リファクタリングにこれほどの時間がかかることに同意する人はいないでしょう。本当に必要です。それは、あなたの初期の設計が非常に貧弱であることを意味します。非常に狭い範囲の変更に限定されているため、所要時間は 2 日程度であると考えています。
これをうまく実行できれば、プロジェクトは非常に保守しやすくなるはずです。これは理想的なことではありませんが、一貫して実行する限り、実際には非常に簡単です。
上記はリファクタリングに関する私の個人的な考えの一部であり、言葉だけでは空虚に見えるかもしれませんが、後で参考とコミュニケーションのために実際のリファクタリングの事例をいくつか紹介します。
アーキテクチャのリファクタリング:
1.再建計画
2.交差部分を抽出するアルゴリズム
3. オブジェクトのレプリケーションを簡単かつ柔軟に実装します

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい
