優れた開発者は通常、コードの品質によって決まります。ソフトウェア業界では、優れたコードを書くということは、テスト、更新、拡張、バグ修正にかかる費用を節約することを意味します。この記事では、ロジック コードをクリーンアップし、リファクタリングして、より堅牢でモジュール化するのに役立つテクニックとアイデアの実例をいくつか示します。これらのヒントは、古いコードをリファクタリングするのに役立つだけでなく、今後よりクリーンなコードを作成する方法についての良いアドバイスも提供します。
リファクタリングとは何ですか?なぜリファクタリングが必要なのでしょうか?
リファクタリングとは、簡潔なコードを書くのに役立つ方法と手順を指します。これは、あまり編集せずにコードを読み、拡張し、再利用できる他の開発者にとって重要です。
次のコンテンツでは、ロジック コードをリファクタリングして改善する例をいくつか示します。
単体テストを行わずに運用コードをリファクタリングしないでください
私の最初のアドバイスは、完全な単体テストを行わずにロジック コードのリファクタリングを開始しないことです。私の推論は次のとおりです。機能が壊れてしまい、何が壊れているのかを特定するのが難しいため、修正するのが困難になります。したがって、リファクタリングする場合は、テストから始めてください。リファクタリングを計画している部分がテストでカバーされていることを確認してください。 PHPUnit コード カバレッジ分析。
コードの下部からリファクタリングを開始します。
下の図を見てください。これは Github から見つけた本物のホテル管理システムのプロジェクトです。これはオープンソース プロジェクトですが、クローズド ソース プロジェクトではひどいことになるでしょう。
例: 下からのリファクタリング
このコードを見ると、赤でマークされた 3 つのレベルがあります。最下位レベルは、最初の if 条件の if/else で囲まれた宣言である必要があります。通常、最下位レベルは単一の論理処理に集中しており、リファクタリングが容易です。
メソッドを短くし、より小さなメソッドまたは構成ファイル/DB テーブルに分解します。
ここで、以下のように改良できるかもしれません。プライベート メソッド:
#メソッドを短くする
次の深さは、パラメーターのアップロードとビューの読み込みです。次に、他の部分をリファクタリングした後の add() メソッドを見てみましょう。より簡潔になり、読みやすく、テストしやすくなります。
例: 最下位レベルを最初にリファクタリングする
if ステートメントでは中かっこの使用が必須
ほとんどのプログラミング言語すべての 1 行の if ステートメントがサポートされています。単純なため、一部の開発者はこの方法を使用しています。ただし、空行があると条件が中断され、クラッシュが発生する可能性があるため、読みにくく、問題が発生しやすくなります。次の 2 つの例の違いを見てください:
例: 中かっこを使用します
マジック ナンバーやマジック文字列は使用しないでください:
次の例では、部屋が 250 を超えるとエラー メッセージが返されることがわかります。ここで、250 はマジックナンバーとみなされます。これを書いている開発者でなければ、この数字が何を意味するのかを理解するのは難しいでしょう。
例: マジック ナンバー
このメソッドをリファクタリングするには、250 が部屋の最大数を表すことを示すことができます。ハードコーディングを置き換えるには、それを変数 $maxAvailableRooms に抽出します。他の開発者にとってもより理解しやすくなりました。
例: マジック ナンバーを修正する
本当に必要がない場合は、else ステートメントを使用しないでください。
同じ availablerooms () 関数内で、if ステートメントに注目すると、else 部分を簡単に削除でき、ロジックの一貫性が保たれます。
メソッド、変数、テストを表す名前を使用します
次の例では、ホテル管理システムに「index ()」と「room_m ()」という 2 つのメソッドがあることがわかります。私には、彼らの目的が何なのか理解できません。彼らの名前が彼ら自身を表していると理解しやすいと思います。#例: メソッドの名前付けが間違っている
プログラミング言語の機能を最大限に活用する
多くの開発者は、使用しているプログラミング言語の機能を最大限に活用していません。多くの機能により時間を節約し、コードをより堅牢にすることができます。以下の例を見て、型ヒントを使用することで、より少ないコードで同じ結果を簡単に達成できることに注目してください。
#最後に、コーディングを改善するための簡単なヒントをいくつか提供したいと思います。
● 新しい配列形式 [] を使用して、古い配列 () を置き換えます。 # データ型を確認しないことが重要でない限り、== の代わりに === 演算子を使用してください。 # パブリック メソッドには、短くわかりやすい名前を付けることをお勧めします。プライベート メソッドではスコープがより制限されているため、長い名前を使用できます。 # インターフェイスを実装するメソッドには add () などの一般的な名前のみを使用し、個々のクラス メソッドには addUser () や addDocument () などのわかりやすい名前を使用します。 # 未使用のメソッドをクラスから削除します。 # ブール値などの値を返す関数には、is/has プレフィックスを使用します: isAdmin ($user)、hasPermission ($user)。 # クラスのメソッドとプロパティでは常にアクセス修飾子を使用してください。 # インターフェイスの汚染に注意してください。ユーザーが公的に利用できるメソッドのみを使用してください。 # パブリック メソッドを先頭にしてクラス メソッドを編成します。 # クラス内では常に単一責任の概念を適用してください。以上が上級 PHP エンジニアに必要なコーディング スキルと考え方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!
