<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Clean Code - A Solid Guide</title> <style> /* Reset & base typography for clean reading */ body { font-family: Georgia, "Times New Roman", Times, serif; line-height: 1.5; margin: 0; padding: 0; color: #1a1a1a; background-color: #fefefe; } h1, h2, h3 { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: normal; margin-top: 1.5em; margin-bottom: 0.5em; page-break-after: avoid; } h1 { font-size: 1.8em; text-align: center; margin-top: 2em; margin-bottom: 1em; border-bottom: 1px solid #ccc; padding-bottom: 0.3em; } h2 { font-size: 1.5em; border-left: 4px solid #2c6e2c; padding-left: 0.6em; } h3 { font-size: 1.3em; font-style: italic; color: #2c6e2c; } p, li, blockquote { text-align: justify; hyphens: auto; } code { font-family: "Courier New", Courier, monospace; background-color: #f5f5f5; padding: 0.2em 0.4em; border-radius: 3px; font-size: 0.9em; white-space: pre-wrap; } pre { background-color: #f5f5f5; padding: 1em; border-left: 4px solid #2c6e2c; overflow-x: auto; font-size: 0.85em; font-family: "Courier New", Courier, monospace; margin: 1.2em 0; border-radius: 0 6px 6px 0; } .bad, .good { padding: 0.8em; margin: 1em 0; border-radius: 6px; } .bad { background-color: #ffe6e6; border-left: 6px solid #c00; } .good { background-color: #e6ffe6; border-left: 6px solid #2c6e2c; } .bad:before { content: "❌ Avoid: "; font-weight: bold; color: #a00; } .good:before { content: "✅ Prefer: "; font-weight: bold; color: #2c6e2c; } .tip { background-color: #eef4ff; padding: 0.8em; margin: 1em 0; border-radius: 6px; border-left: 6px solid #1e6f9f; } .tip:before { content: "💡 Tip: "; font-weight: bold; color: #1e6f9f; } ul, ol { margin: 0.8em 0; padding-left: 1.5em; } li { margin: 0.3em 0; } hr { margin: 2em 0; border: none; border-top: 1px dotted #bbb; } .footer { margin-top: 3em; font-size: 0.8em; text-align: center; color: #777; border-top: 1px solid #ddd; padding-top: 1em; } @media (prefers-color-scheme: dark) { body { background-color: #1e1e1e; color: #e0e0e0; } code, pre { background-color: #2d2d2d; } .bad { background-color: #2a1a1a; } .good { background-color: #1a2a1a; } .tip { background-color: #1a2a3a; } } </style> </head> <body> <h1>Clean Code: A Solid Guide</h1> <p style="text-align: center; font-style: italic;">Practical principles for writing readable, maintainable, and honest software.</p>
<div class="tip"> One assertion per test is a good guideline. If you have many, consider splitting. </div>
<h2>6. Error Handling: Separate Logic from Errors</h2> <p>Error handling is one thing. Your business logic is another. Don’t mix them.</p>
<h3>No side effects</h3> <p>A function named <code>checkPassword()</code> should not also initialize a session. Do one thing.</p> codigo limpo epub
<div class="bad"> <code>// increment i by 1<br />i++;</code> </div> <div class="good"> <code>// Retry up to 3 times due to eventual consistency in payment service<br />for (int attempt = 0; attempt < 3; attempt++) { ... }</code> </div>
<h2>5. Objects and Data Structures</h2> <p>Objects hide data behind abstractions. Data structures expose data and have no meaningful functions.</p>
<h3>Rule 1: Use intention-revealing names</h3> <div class="bad"> <code>int d; // elapsed time in days</code> </div> <div class="good"> <code>int elapsedTimeInDays;</code> </div> Do one thing
<h3>Small! Really small</h3> <p>An entire function should rarely exceed 20 lines. If you need a comment to explain a block inside a function, extract that block into a new function.</p>
<div class="bad"> <pre>try { deletePage(page); registry.deleteReference(page.name); } catch (Exception e) { logError(e); throw new RuntimeException(); }</pre> </div>
<ul> <li><strong>Rigidity</strong>: A small change breaks many parts → increase cohesion, reduce coupling.</li> <li><strong>Fragility</strong>: Changes cause unexpected failures → add tests, encapsulation.</li> <li><strong>Opacity</strong>: Code is hard to understand → rename, refactor, add explanatory variables.</li> <li><strong>Feature envy</strong>: A method seems more interested in another class’s data → move the method.</li> <li><strong>Long parameter list</strong>: Wrap parameters into an object (DTO).</li> </ul> or class name should reveal intent.<
<h2>Conclusion: Professionalism</h2> <p>Clean code is not perfectionism—it’s respect for your future self and your teammates. Leave the codebase better than you found it. Refactor continuously, review each other’s work, and never accept “it works” as a substitute for “it’s clean.”</p>
<h2>1. Meaningful Names</h2> <p>Names are the smallest building blocks of code clarity. Every variable, function, or class name should reveal intent.</p>
</body> </html>