ホームページ >バックエンド開発 >Python チュートリアル >リファクタリング - デッドコードの削除

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 17:34:11668ブラウズ

ゴミを片付けます

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 までご連絡ください。