Ensuring that code adheres to the project's established patterns and best practices is key to maintaining software quality. Below, I'll demonstrate how to identify code that doesn't align with best practices and how to improve it.
Example of Old Code
Imagine we have a backend service for an online store, which includes a class for managing product inventory. Here's an example of the old code:
class Inventory:
def __init__(self):
self.stock = {}
def add_product(self, product_id, quantity):
if product_id in self.stock:
self.stock[product_id] += quantity
else:
self.stock[product_id] = quantity
def remove_product(self, product_id, quantity):
if product_id in self.stock:
if self.stock[product_id] >= quantity:
self.stock[product_id] -= quantity
else:
print("Not enough stock!")
else:
print("Product not found!")Issues in the Code
Using
printfor Error Handling
The use ofprintto handle errors is not a good practice, especially in a production environment, as it complicates error tracking and log management.Inconsistent Error Handling
The methodsadd_productandremove_producthandle errors inconsistently, making the code harder to maintain.
Project Best Practices
Assume that the project follows these best practices:
Use exception handling to manage errors.
Use a logging library to record errors and important information instead of
print.Adopt expressive method names in classes.
Improved Code
import logging
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
class Inventory:
def __init__(self):
self.stock = {}
def increment_stock(self, product_id, quantity):
if product_id in self.stock:
self.stock[product_id] += quantity
else:
self.stock[product_id] = quantity
logging.info(f"Stock added: {quantity} units of {product_id}. Total stock: {self.stock[product_id]}.")
def decrement_stock(self, product_id, quantity):
try:
if self.stock[product_id] >= quantity:
self.stock[product_id] -= quantity
logging.info(f"Stock removed: {quantity} units of {product_id}. Remaining stock: {self.stock[product_id]}.")
else:
raise ValueError("Insufficient stock available.")
except KeyError:
logging.error(f"Attempt to remove non-existent product {product_id} from stock.")
raise KeyError("Product not found in inventory.")
except ValueError as e:
logging.error(str(e))
raiseExplanation of Code Improvements
Logging
Thelogginglibrary replacesprint, allowing error messages and important actions to be properly recorded. This makes it easier to monitor and troubleshoot the system.Exception Handling
Errors are now managed through exceptions instead of simple print statements, providing a structured way to handle error scenarios.Method Renaming
Methodsadd_productandremove_productare renamed toincrement_stockanddecrement_stock, making their purpose clearer and more expressive.
This example illustrates how to improve code by aligning it with project best practices, resulting in greater maintainability, consistency, and scalability.