目次
コードの匂い 09 - デッドコード
マキシ・コンティエリ ・ 2020年10月28日
コードの匂い 54 - アンカーボート
Maxi Contieri ・ 2022 年 10 月 24 日
コードの匂い 148 - ToDo
リファクタリング 003 - 定数の抽出
簡単なリファクタリングでコードを改善する方法
ホームページ バックエンド開発 Python チュートリアル リファクタリング - デッドコードの削除

リファクタリング - デッドコードの削除

Dec 29, 2024 pm 05:34 PM

ゴミを片付けます

TL;DR: 未使用の関数、定数、および「万が一の」コードを削除します。

対処された問題

  • デッドコード

  • 念のためのコード

  • 保守性の低下

  • アンカーボート

  • 認知負荷

関連コードの匂い

Refactoring  - Remove Dead Code

コードの匂い 09 - デッドコード

マキシ・コンティエリ ・ 2020年10月28日

#コード初心者 #チュートリアル
Refactoring  - Remove Dead Code

コードの匂い 54 - アンカーボート

Maxi Contieri ・ 2021 年 1 月 6 日

#コード初心者 #webdev #チュートリアル #クリーンコード
Refactoring  - Remove Dead Code

コードの匂い 148 - ToDo

Maxi Contieri ・ 2022年7月13日

#javascript #webdev #初心者 #プログラミング

ステップ

  1. コードの機能範囲が適切であることを確認してください。

  2. コードを確認するか、静的解析ツールを使用して、未使用の関数と定数を特定します。

  3. 念のため、追加された投機的コードを分析します。

  4. 不要または未使用のものを削除します。

  5. コードに対して包括的な回帰テストを実行します。

サンプルコード

前に

from flask import Flask, jsonify, make_response

app = Flask(__name__)

HTTP_100_CONTINUE = 100
HTTP_202_ACCEPTED = 202  # Not used
HTTP_204_NO_CONTENT = 204 # Not Used
HTTP_302_FOUND = 302 # Not Used
HTTP_400_BAD_REQUEST = 400  # Not Used
HTTP_401_UNAUTHORIZED = 401 # Not Used
HTTP_403_FORBIDDEN = 403
HTTP_404_NOT_FOUND = 404
HTTP_410_GONE = 410
HTTP_500_INTERNAL_SERVER_ERROR = 500
HTTP_501_NOT_IMPLEMENTED = 501

probe_telemetry = {
    "temperature": {"solar_panels": 150, "instrument_1": 50},
    "position": {"x": 1000000, "y": 2000000, "z": 3000000, 
    "velocity": {"vx": 100, "vy": 200, "vz": 300}},
    "status": {"power_level": 95, "communication_status": "OK"}
}

@app.route('/api/v1/probe/telemetry', methods=['GET'])
def get_telemetry():
    return jsonify(probe_telemetry), HTTP_200_OK

# The following function is not invoked 
# and not implemented
# It is a dead placeholder
@app.route('/api/v1/probe/send_command', methods=['POST'])
def send_command():
    return jsonify({"message": "Command endpoint not implemented yet."}), 
       HTTP_501_NOT_IMPLEMENTED

@app.route('/api/v1/probe/data', methods=['GET'])
def get_data():
    return jsonify({"message": "Data not found"}), 
       HTTP_404_NOT_FOUND

@app.route('/api/v1/probe/redirect', methods=['GET'])
def redirect_endpoint():
    response = make_response(jsonify({"message": "Redirecting..."}), 
       HTTP_301_MOVED_PERMANENTLY)
    response.headers['Location'] = '/api/v1/probe/telemetry'
    return response

@app.route('/api/v1/probe/not_modified', methods=['GET'])
def not_modified_endpoint():
    response = make_response(jsonify({"message": "Not Modified"}), 
       HTTP_304_NOT_MODIFIED)
    response.headers['ETag'] = 'some_etag'
    return response

@app.route('/api/v1/probe/gone', methods=['GET'])
def gone_endpoint():
    return jsonify({"message": "Resource permanently gone"}),
       HTTP_410_GONE
ログイン後にコピー

# 1. Ensure your code has good functional coverage.

from flask import Flask, jsonify, make_response
from http import HTTPStatus

app = Flask(__name__)

# 2. Identify unused functions and constants 
# by reviewing your code or using static analysis tools.
HTTP_200_OK = HTTPStatus.OK
HTTP_301_MOVED_PERMANENTLY = HTTPStatus.MOVED_PERMANENTLY
HTTP_304_NOT_MODIFIED = HTTPStatus.NOT_MODIFIED
HTTP_404_NOT_FOUND = HTTPStatus.NOT_FOUND
HTTP_410_GONE = HTTPStatus.GONE
HTTP_501_NOT_IMPLEMENTED = HTTPStatus.NOT_IMPLEMENTED

probe_telemetry = {
    "temperature": {"solar_panels": 150, "instrument_1": 50},
    "position": {"x": 1000000, "y": 2000000, "z": 3000000, 
    "velocity": {"vx": 100, "vy": 200, "vz": 300}},
    "status": {"power_level": 95, "communication_status": "OK"}
}

@app.route('/api/v1/probe/telemetry', methods=['GET'])
def get_telemetry():
    return jsonify(probe_telemetry), HTTP_200_OK

# 3. Analyze the added speculative code, just in case.

@app.route('/api/v1/probe/send_command', methods=['POST'])
def send_command():
    return jsonify({"message": "Command endpoint not implemented yet."}), 
       HTTP_501_NOT_IMPLEMENTED

@app.route('/api/v1/probe/data', methods=['GET'])
def get_data():
    return jsonify({"message": "Data not found"}), 
      HTTP_404_NOT_FOUND

# 4. Remove anything unnecessary or unused.

# 5. Perform comprehensive regression testing on your code.
ログイン後にコピー

タイプ

[X] 半自動

安全性

変更後にアプリケーションを徹底的にテストすれば、このリファクタリングは安全です。静的分析ツールは、まだ使用されているものを削除しないようにするのに役立ちます。

なぜコードの方が優れているのでしょうか?

未使用の要素を削除することで、明瞭さが向上し、複雑さが軽減されます。

コードの理解と保守が容易になります。

投機的なコードを減らすと、現在の実際の要件に集中し続けることができます。

どのようにして単射を改善するのでしょうか?

デッドコードと推測的な要素により、ソフトウェアと現実世界のモデル間の全単射が壊れます。

これらの要素を削除すると、コードが
を正確に表現できるようになります。 MAPPER により、よりクリーンかつ現実に近づきます。

制限事項

デッドコードを削除するには、それが本当に未使用であるという確信が必要です。

このプロセスは静的分析またはコードベースの徹底的な知識に依存しているため、堅牢なツールがないとエラーが発生しやすくなります。

AIによるリファクタリング

Without Proper Instructions With Specific Instructions
ChatGPT ChatGPT
Claude Claude
Perplexity Perplexity
Copilot Copilot
Gemini Gemini

タグ

  • ブローター

関連するリファクタリング

Refactoring  - Remove Dead Code

リファクタリング 003 - 定数の抽出

Maxi Contieri ・ 2022 年 1 月 2 日

#おっと #プログラミング #リファクタリング #クリーンコード

クレジット

Pixabay からの Peter H による画像


この記事はリファクタリング シリーズの一部です。

Refactoring  - Remove Dead Code

簡単なリファクタリングでコードを改善する方法

Maxi Contieri ・ 2022 年 10 月 24 日

#webdev #初心者 #プログラミング #チュートリアル

以上がリファクタリング - デッドコードの削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

See all articles