
Explore how strong typing affects clean code across languages like Python, TypeScript, Java, and C#. Learn that explicit types help prevent errors and may aid readability, but are not mandatory.
Understand how the course uses short, focused code examples drawn from a larger project, often not executable, and presented as standalone functions across languages.
Learn to write clean code through iterative refinement and refactoring. Continuously question and improve your code to stay maintainable and boost future productivity over quick, brittle solutions.
Choose meaningful names for variables, constants, properties, and data containers using descriptive nouns; use verbs for functions and classes like User or RequestBody.
Master naming variables, constants, and properties by examining bad, okay, and good names for a user object, including specific choices like user, customer, and isValid or isCorrect.
Name functions and methods by describing the operation they perform or their boolean result, using clear forms such as getUser, response.send, isPaid, and getUserByEmail.
Learn to name classes by describing the instantiated object, using clear, non-redundant names like user or product, avoid redundant suffixes such as DatabaseManager, and prefer instantiated types over static utilities.
This lecture teaches clean code naming by refactoring a point and rectangle example, promoting origin, width, height, and getArea, and renaming end_points to print_coordinates.
Avoid unnecessary comments and rely on self-explanatory names to improve readability. Delete redundant, misleading, or commented-out code, and use version control to recover changes.
Enhance code readability and understandability through vertical and horizontal formatting, following language-specific rules and general style guides for consistent indentation and spacing.
Explore how language-specific rules govern function ordering and execution, contrasting JavaScript's ability to call a function before its definition with Python's need to define before use.
Refactor this file by cleaning comments, removing dividers, clarifying warnings, and tightening spacing to improve readability, maintainability, and proper error handling.
Minimize function parameters to keep calls easy to understand, starting with no parameters, then one, two, or three where appropriate, and avoid more than three unless necessary.
Refactor multi-argument functions into a single argument object to improve readability and reduce order errors. Use a data container like a map or object to extract values by key.
Learn how levels of abstraction guide function responsibilities, keeping low-level details near the function name and avoiding mixing abstraction levels in code such as emailIsValid and saveUser.
Use two rules of thumb to decide when to split a function: extract blocks that implement the same functionality into a new method, and extract code that requires more interpretation.
Learn to write DRY code by splitting functions to boost reusability and avoid repeating yourself. Identify non-dry patterns like copy-paste and applying the same changes in multiple places.
Keep functions pure by ensuring the same input always yields the same output, minimize side effects, and name functions to signal when side effects are expected.
Discover how unit testing and test-driven development promote clean code by breaking complex functions into small, testable units and avoiding unwanted side effects.
Inverts the checking logic by first identifying the transaction method (credit card, PayPal, or plan) and then processing payments or refunds in specialized functions.
Explore polymorphism as an alternative to duplicate if checks and learn to split code into focused functions and data, util, and processing folders for a lean, clean codebase.
This lecture demonstrates polymorphism with classes, introducing a base delivery class and specialized express, insured, and standard deliveries, using a factory to instantiate the right type and remove if checks.
Apply the single-responsibility principle in clean code to keep classes small and focused, so changes occur for one reason, separating data generation from PDF creation.
Apply what you learned by building demo projects and using it in your day-to-day work to reinforce a solid foundation in clean code.
As a developer, you should be able to write code which works - of course!
A lot of developers write bad code nonetheless - even though the code works. Because "working code" is not the same as "clean code"!
This course teaches you how to write clean code - code that is easy to read and understand by humans, not just computers!
In this course, you'll learn what exactly clean code is and, more importantly, how you can write clean code. Because if your code is written in a clean way, it's easier to read and understand and therefore easier to maintain.
Because it's NOT just the computer who needs to understand your code - your colleagues and your future self needs to be able to understand it as well!
In this course, we'll dive into all the main "pain points" related to clean code (or bad code - depending on how you look at it) and you will not just learn what makes up bad code but of course also how to turn it into clean code.
Specifically, you will learn about:
Naming "things" (variables, properties, classes, functions, ...) properly and in a clean way
Common pitfalls and mistakes you should avoid when naming things
Comments and that most of them are bad
Good comments you might consider adding to your code
Code formatting - both horizontal and vertical formatting
Functions and how to limit the number of function parameters
How to write clean functions by focusing on "one thing"
How levels of abstraction help you split functions and keep them small
How to write DRY functions and avoid unexpected side effects
Avoiding deeply nested control structures with guards and by extracting functionality into functions
Errors and error handling as a replacement for if-statements
Objects & data containers/ data structures and why that differentiation could matter
Cohesion and how to write good (small!) classes
The Law of Demeter and why it matters for clean code
What the SOLID principles are and why they matter when it comes to writing clean code
Much more!
This course is a compilation of common patterns, best practices, principles and rules related to writing clean code.
In this course, you'll learn about a broad variety of concepts, rules, ideas, thoughts and principles and by the end of course, you'll have a good idea of what to keep in mind when it comes to writing clean code.
This is not a design patterns or general patterns course though - we will entirely focus on patterns, rules and concepts that help with writing clean code specifically.
All these concepts and rules are backed up by examples, code snippets and demos. And to ensure that you get the most out of this course, and you don't just learn a bunch of theory which you forget soon after, there also are plenty of challenges for you to apply what you learned!
This course uses Python, JavaScript and TypeScript for code examples but you don't need to know these languages to follow along and get a lot out of the course. In addition, the course does not focus on a specific programming style or paradigm (like functional programming, object-oriented programming etc) but instead covers general concepts and techniques which will always apply.
What are the course prerequisites?
Basic programming knowledge (no matter which language) is required!
You don't need to know any specific programming language or programming paradigm to follow along
NO prior experience with writing clean code is required