paint-brush
Refactorización 021: eliminar código muertopor@mcsee
Nueva Historia

Refactorización 021: eliminar código muerto

por Maximiliano Contieri4m2025/01/01
Read on Terminal Reader

Demasiado Largo; Para Leer

Elimine funciones no utilizadas, constantes y código "por si acaso".
featured image - Refactorización 021: eliminar código muerto
Maximiliano Contieri HackerNoon profile picture
0-item

Limpiar la basura

TL;DR: elimine funciones no utilizadas, constantes y código "por si acaso".

Problemas abordados

Códigos relacionados con olores

Pasos

  1. Asegúrese de que su código tenga una buena cobertura funcional.
  2. Identifique funciones y constantes no utilizadas revisando su código o utilizando herramientas de análisis estático.
  3. Analice el código especulativo agregado, por si acaso.
  4. Retire todo lo innecesario o no utilizado.
  5. Realice pruebas de regresión integrales en su código.

Código de muestra

Antes

 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

Después

 # 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.

Tipo

  • [x] Semiautomático

Puede realizar pequeños pasos y eliminar el código innecesario en las iteraciones.

Seguridad

Esta refactorización es segura si prueba exhaustivamente su aplicación después de los cambios. Las herramientas de análisis estático pueden ayudarle a asegurarse de no eliminar nada que todavía esté en uso.

¿Por qué es mejor el Código?

Mejora la claridad y reduce la complejidad eliminando elementos no utilizados.

Su código será más fácil de entender y mantener.

Reducir el código especulativo también le permite centrarse en los requisitos reales actuales.

¿Cómo mejora la biyección?

El código muerto y los elementos especulativos rompen la biyección entre su software y el modelo del mundo real.

Eliminar estos elementos garantiza que su código represente con precisión su MAPPER , haciéndolo más limpio y cercano a la realidad.

Limitaciones

Para eliminar el código muerto es necesario tener la seguridad de que realmente no se utiliza.

Este proceso se basa en un análisis estático o en un conocimiento profundo del código base, que puede ser propenso a errores sin herramientas robustas.

Refactorizar con IA

Sin instrucciones adecuadas

Con instrucciones específicas

ChatGPT

ChatGPT

Claudio

Claudio

Perplejidad

Perplejidad

Copiloto

Copiloto

Géminis

Géminis

Etiquetas

  • Hinchazones

Refactorizaciones relacionadas

Créditos

Imagen de Peter H en Pixabay


Este artículo es parte de la serie Refactoring.