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











Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

Pythonlistsarepartofthestandardlibrary, sementara

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Aplikasi Python dalam pengkomputeran saintifik termasuk analisis data, pembelajaran mesin, simulasi berangka dan visualisasi. 1.Numpy menyediakan susunan pelbagai dimensi yang cekap dan fungsi matematik. 2. Scipy memanjangkan fungsi numpy dan menyediakan pengoptimuman dan alat algebra linear. 3. Pandas digunakan untuk pemprosesan dan analisis data. 4.Matplotlib digunakan untuk menghasilkan pelbagai graf dan hasil visual.

Aplikasi utama Python dalam pembangunan web termasuk penggunaan kerangka Django dan Flask, pembangunan API, analisis data dan visualisasi, pembelajaran mesin dan AI, dan pengoptimuman prestasi. 1. Rangka Kerja Django dan Flask: Django sesuai untuk perkembangan pesat aplikasi kompleks, dan Flask sesuai untuk projek kecil atau sangat disesuaikan. 2. Pembangunan API: Gunakan Flask atau DjangorestFramework untuk membina Restfulapi. 3. Analisis Data dan Visualisasi: Gunakan Python untuk memproses data dan memaparkannya melalui antara muka web. 4. Pembelajaran Mesin dan AI: Python digunakan untuk membina aplikasi web pintar. 5. Pengoptimuman Prestasi: Dioptimumkan melalui pengaturcaraan, caching dan kod tak segerak
