ホームページ バックエンド開発 PHPチュートリアル 海外メディアレビュー: プログラムを改善するための 11 のヒント_PHP チュートリアル

海外メディアレビュー: プログラムを改善するための 11 のヒント_PHP チュートリアル

Jul 13, 2016 pm 05:42 PM
なぜ 可読性 メディア 私たち スキル 持っている クリア プログラム 説明する

明確で読みやすいプログラムを作成する必要がある理由はたくさんあります。最も重要な点は、プログラムを作成するのは一度だけですが、将来的には何度も読み取ることになるということです。翌日コードに戻ったら、読み始めてください。コードを他の人に見せるときは、その人はコードを読まなければなりません。したがって、書くときにもう少し時間を費やすと、読むときに多くの時間を節約できます。

基本的なプログラミング スキルを見てみましょう:

メソッドはできるだけ短くしてください

同じ変数を複数の異なる目的に決して使用しないでください

自己記述的な変数名とメソッド名を使用します

変数はできるだけ使用される場所の近くで定義してください

謎の数字を拒否

言葉遣いに優しくしてください

ルールに違反しないでください

時期尚早な最適化に注意してください

テスト済みプログラムを積極的にリファクタリングします

テクニックにこだわりすぎないでください

実践例を通して新しい知識を学びましょう

それでは、それぞれの小さなポイントを拡張して詳しく説明していきます。

1.メソッドをできるだけ短くするようにしてください

多くの人がこのルールに従っていますが、それでも非常に重要です。作成するメソッドは常に 1 つの画面に収まるようにしてください。スクロールする必要がある場合、気が散ってコンテキスト全体が見えなくなります。状況に応じて、最適な長さは 5 ~ 20 行です。もちろん、ゲッター/セッターは通常 1 行のメソッドですが、実際のメソッドというよりはアクセサーに似ています。

2. 複数の異なる目的で同じ変数を決して使用しないでください

変数は常に 1 つの目的のみを提供する必要があります。変数を定数 (C++ では const、Java では Final) にすることで、コンパイラはコンパイルを最適化し、この変数が変更できないことをコードで明確に表現できるようになり、プログラムの可読性が向上します。

3. 自己記述的な変数名とメソッド名を使用する

あなたのコードは、誰にとっても、見ただけで何をするのか理解できる必要があります。次のような特別な習慣がない限り、略語は使用しないようにしてください。

src - ソース pos​​ - 位置 prev - 前

わかりやすい名前はそれほど価値がないと思われる場合は、n、ns、nsisd を numTeamMembers、seatCount、numSeatsInStadium と比較してください。

4. 変数は、使用される場所のできるだけ近くで定義します

家を建てるとき、他人の庭にハンマーを置きたくないですよね。できるだけ手元に置いておきたいものです。変数の定義についても同様です。

int foo = 3;int bar = 5;// 「bar」を使用するコードの大部分、 // しかし「foo」は使用されません // ...baz(foo);

このコードは単純に

に再構成できます。

int bar = 5;// コードの大部分は「bar」を使用しますが、 // 「foo」は使用しません // ...int foo = 3;baz(foo);

これは、変数の宣言を最初に使用するときから離れすぎた (1 画面以上離れた) 場合に問題になります。コンテキストを思い出すのは難しくなり、変数がどこから来たのかを見つけるためにスクロールする必要があります。

5.謎の数字を拒否する

何かを定数値と比較したい場合は、値を定数として定義することを忘れないでください。同僚が何を書いたかを推測することほどイライラすることはありません:

イル

フォームを変えるのはどんな感じですか?

inputLength

6. 言葉遣いをフレンドリーにしましょう

新しい言語を学ぶのはとても楽しいですし、タスクを完了するための新しい方法を学ぶことができます。すでにある言語を専門としている人が別の言語を学習すると、大きな悪影響が生じます。あなたが Java 開発者で、Ruby を学ぼうとしているとします。 Java の方法で問題を解決するのではなく、Ruby の方法で問題を解決する方法を学ぶ必要があります。

Java で「Hello world!」を 5 回繰り返す必要がある場合は、次のようにします。

for (int i = 0; i

Ruby では、次のように書きたくなるかもしれません:

for i in (0..5) は「Hello world!」を終了します

これは問題ないようですが、もっと良い方法があります:

5.x { は「Hello world!」を入れます }

7. ルールに違反しないでください

それぞれの言語には独自の異なる慣習があります。一般に、人々が最もよく聞くのは Java のコーディング仕様です。これらの習慣のいくつかを見てみましょう:

メソッド名は小文字で始まり、その後に大文字の単語が続く必要があります(veryLongVariableName)

クラス名はすべて、単語の最初の文字を大文字で連結して形成する必要があります

定数名はすべて大文字でアンダースコアで接続する必要があります(MY_CONSTANT)

左中括弧は if ステートメントと同じ行にある必要があります

これらのルールを破るのは、必要な理由がある場合のみであり、単に自分が不幸だからという理由で破らないでください。チーム内のこれらの習慣の一部を変更するだけであれば問題ありませんが、コードを取り出して、これらの考えに対して準備ができていない他のプログラマーと共有すると、問題が発生します。

8. 時期尚早な最適化に注意してください

時期尚早の最適化がすべての問題の根源、少なくともテレビではそう言われています… まず気を付けるべきことは、理解しやすいコードを書くことです。私が最初に書いたプログラムは高速である必要はありませんでした。プログラムが非常に遅い場合を除き、最適化について話すのは時期尚早です。何かを最適化したい場合は、まず問題が何であるかを知る必要があります。これがプロファイラーが必要な理由です。

問題がどこにあるのかを知らずにプログラムを最適化しようとすると、必然的にプログラムが壊れるか、少なくともコードが可読性を失います。何かが遅いと思われる場合は、やみくもにコードを書き直すのではなく、まず遅いという証拠を見つける必要があります。

まったく存在しない問題を解決するような愚かなことはしないでください。

9. テスト済みプログラムを積極的にリファクタリングする

完璧なものはありません。実際には完璧なコードを書いたように感じていても、数か月後に振り返ってみると、「どうしてそんなに愚かだったんだろう?」と疑問に思うかもしれません。

プログラムを改善する良い方法はリファクタリングすることですが、それはプログラムがテストに合格した後に限ります。まず、プログラムが良好で実行可能であることを確認する必要があります。これは、自動テストまたは手動テストを通じて行うことができます。

最初に必要なのは、プログラムが利用可能になることだけです。最初から完璧なプログラムを書くことを期待しないでください。必要なのはそれを機能させることだけです。次に、それをリファクタリングして完璧にします。テスト駆動開発 (TDD) を知っている人にとっては、これは見覚えのあるものでしょう。ここで重要なのは、リファクタリングに慣れる必要があるということです。 IntelliJ IDEA のような強力な統合開発ツールを使用している場合、リファクタリング作業ははるかに簡単になります。

リファクタリング後、いくつかのバグが作成され、特定の機能で問題が発生する可能性があります。だからこそ、自動テストを作成することが重要です。リファクタリングするときはいつでも、すべてのテスト ケースを実行するだけで、何が問題だったのかが正確にわかります。

10. テクニックにこだわりすぎないようにしましょう

デザインパターンについて初めて読んだとき、聖杯を見つけたと思いました。これらの綿密なアイデアは、最初から最後まで説明しなくても「『オブザーバー パターン』を使用しています」と言うだけで済むため、デザインを理解しやすくするのに大きな効果があります。それで、何か質問はありますか? すべてが非常に自然でシンプルに見えるため、あらゆる場所でデザイン パターンを使用し始めます。このクラスをシングルトンにしてみませんか? いくつかのファクトリークラスを作成してみてはいかがでしょうか?

つまり、80 行で記述できるスクリプトの場合、最終的には 10 のクラス、15 のインターフェイス、さらに多くのパラダイムとマーカーを使用することになります。コードの 97% は何も行いません。デザイン パターンはデザインを簡素化するのに非常に便利なツールですが、どこにでも使用する必要があるというわけではありません。それらは使用する必要がありますが、乱用しないでください。

11. 演習を通じて新しい知識を学びます

プログラミングは新しい知識を学ぶプロセスです。新しいライブラリや言語を学ぶとき、古いコードを捨てて、新しく得た知識を使ってコードを書き直したくなるかもしれません。これをすべきではない理由はたくさんあります。

これは、既存のアプリケーションに新しいクラス ライブラリやフレームワークを追加する場合にも当てはまります。 Javascript Web アプリケーションを作成し、そのプロセス中に jQuery を発見したとします。ここで、これまで一度も使用したことがないにもかかわらず、突然、JavaScript プログラムを捨てて jQuery で書き直したくなりました。

最善の方法は、まず jQuery で簡単な例をいくつか書き、この方法でアプリケーションで使用するすべての知識を学ぶことです。 AJAX が必要ですか? プロジェクトの外でいくつかの小さなサンプルを作成し、完全に理解したら、サンプルを捨てて製品に適用してください。

プログラミング技術に非常に興味がある場合は、Steve McConnell が書いた「Code Encyclopedia」という本を読むことを強くお勧めします。それはあなたのプログラミングに対する理解を永遠に変えるでしょう。 :)

http://www.bkjia.com/PHPjc/486022.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486022.html技術記事明確で読みやすいプログラムを作成する必要がある理由はたくさんあります。最も重要な点は、プログラムを作成するのは一度だけですが、将来的には何度も読み取ることになるということです。次の日戻ってくると…
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

H5ページの生産には継続的なメンテナンスが必要ですか? H5ページの生産には継続的なメンテナンスが必要ですか? Apr 05, 2025 pm 11:27 PM

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

JSはH5なしで実行できますか? JSはH5なしで実行できますか? Apr 06, 2025 am 09:06 AM

JavaScriptはHTML5なしで実行できますか? JavaScriptエンジン自体は独立して実行できます。ブラウザ環境でJavaScriptを実行すると、コードをロードおよび実行するために必要な標準化された環境を提供するため、HTML5に依存します。 HTML5が提供するAPIと機能は、最新のJavaScriptフレームワークとライブラリにとって重要です。 HTML5環境がなければ、多くのJavaScript機能を実装が困難であるか、実装できません。

Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Apr 05, 2025 pm 01:03 PM

Vueアプリケーションを開発するときに、ルーターフォルダーの下にindex.jsファイルにvuerouterを登録する必要性があるため、ルーティング構成で問題が発生することがよくあります。特別...

H5ページの生産の利点は何ですか H5ページの生産の利点は何ですか Apr 05, 2025 pm 11:48 PM

H5ページの生産の利点には、軽量エクスペリエンス、積み込み速度、ユーザー保持の改善が含まれます。クロスプラットフォームの互換性、さまざまなプラットフォームに適応する必要はなく、開発効率を向上させます。柔軟性と動的な更新、監査が不要で、コンテンツの変更と更新が容易になります。ネイティブアプリよりも費用対効果の高い開発コスト。

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

エッジブラウザの特定のDIV要素が表示されないのはなぜですか?この問題を解決する方法は? エッジブラウザの特定のDIV要素が表示されないのはなぜですか?この問題を解決する方法は? Apr 05, 2025 pm 08:21 PM

ユーザーエージェントスタイルシートによって引き起こされるディスプレイの問題を解決する方法は? Edgeブラウザを使用する場合、プロジェクトのDIV要素を表示することはできません。チェックした後、私は投稿しました...

rootとしてmysqlにログインできません rootとしてmysqlにログインできません Apr 08, 2025 pm 04:54 PM

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

カスタムスタイルのシートは、SafariのローカルWebページでバイドゥページでは効果を発揮できないのはなぜですか? カスタムスタイルのシートは、SafariのローカルWebページでバイドゥページでは効果を発揮できないのはなぜですか? Apr 05, 2025 pm 05:15 PM

Safariでカスタムスタイルシートを使用することについてのディスカッション今日は、Safariブラウザ向けのカスタムスタイルシートのアプリケーションに関する質問について説明します。フロントエンド初心者...

See all articles