Pemfaktoran Semula - Buang Kod Mati
Bersihkan sampah
TL;DR: Hapuskan fungsi yang tidak digunakan, pemalar dan kod "hanya dalam kes".
Masalah Diatasi
Kod Mati
Kod hanya dalam kes
Kebolehselenggaraan yang dikurangkan
Bot Sauh
Beban Kognitif
Bau Kod Berkaitan

Bau Kod 09 - Kod Mati
Maxi Contieri ・ 28 Okt '20

Bau Kod 54 - Bot Sauh
Maxi Contieri ・ 6 Jan '21

Bau Kod 148 - ToDos
Maxi Contieri ・ 13 Jul '22
Langkah
Pastikan kod anda mempunyai liputan berfungsi yang baik.
Kenal pasti fungsi dan pemalar yang tidak digunakan dengan menyemak kod anda atau menggunakan alat analisis statik.
Analisis kod spekulatif yang ditambahkan, untuk berjaga-jaga.
Alih keluar apa-apa yang tidak perlu atau tidak digunakan.
Lakukan ujian regresi komprehensif pada kod anda.
Kod Contoh
Sebelum ini
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
Selepas
# 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.
taip
[X] Separa Automatik
Keselamatan
Pemfaktoran semula ini selamat jika anda menguji aplikasi anda dengan teliti selepas perubahan. Alat analisis statik boleh membantu memastikan anda tidak mengalih keluar apa-apa yang masih digunakan.
Mengapa Kod Lebih Baik?
Anda meningkatkan kejelasan dan mengurangkan kerumitan dengan mengalih keluar elemen yang tidak digunakan.
Kod anda menjadi lebih mudah untuk difahami dan diselenggara.
Mengurangkan kod spekulatif juga mengekalkan tumpuan anda pada keperluan sebenar semasa.
Bagaimana Ia Meningkatkan Bijection?
Kod mati dan elemen spekulatif memecahkan Bijection antara perisian anda dan model dunia sebenar.
Mengalih keluar elemen ini memastikan kod anda mewakili
anda dengan tepat
MAPPER, menjadikannya lebih bersih dan lebih dekat dengan realiti.
Had
Mengalih keluar kod mati memerlukan keyakinan bahawa ia benar-benar tidak digunakan.
Proses ini bergantung pada analisis statik atau pengetahuan asas kod yang menyeluruh, yang boleh terdedah kepada ralat tanpa alat yang mantap.
Refactor dengan AI
Without Proper Instructions | With Specific Instructions |
---|---|
ChatGPT | ChatGPT |
Claude | Claude |
Perplexity | Perplexity |
Copilot | Copilot |
Gemini | Gemini |
Tag
- Bloaters
Pemfaktoran Semula Berkaitan

Pemfaktoran Semula 003 - Pemalar Ekstrak
Maxi Contieri ・ 2 Jan '22
Kredit
Imej oleh Peter H dari Pixabay
Artikel ini adalah sebahagian daripada Siri Pemfaktoran Semula.

Cara Meningkatkan Kod anda Dengan Pemfaktoran Semula yang mudah
Maxi Contieri ・ 24 Okt '22
Atas ialah kandungan terperinci Pemfaktoran Semula - Buang Kod Mati. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Fastapi ...

Menggunakan Python di Terminal Linux ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...
