Best of TDD2024

  1. 1
    Article
    Avatar of substackSubstack·2y

    Clean Code: 7 tips to write clean functions

    Writing clean functions ensures that your code is readable, maintainable, and less prone to errors. Key tips include keeping functions small and well-named, limiting parameters, reducing nesting by returning early, writing pure functions without side effects, avoiding boolean flags, and using comments sparingly. Good coding is about communication between programmers, so clarity and simplicity are paramount.

  2. 2
    Article
    Avatar of habrhabr·2y

    Python Clean Code: Stop Writing Bad Code — Lessons from Uncle Bob

    Transform messy, unorganized code into clean, readable, and maintainable Python code by applying key principles from Robert C. Martin's 'Clean Code'. Learn to use meaningful naming, modular functions, proper error handling, and consistent formatting to enhance your code quality. Avoid common pitfalls like excessive comments, code duplication, and side effects. Test-Driven Development (TDD) and Command Query Separation are also discussed as vital practices for robust code.

  3. 3
    Article
    Avatar of substackSubstack·2y

    Refactor like a PRO

    Refactoring is the act of improving the structure of code without modifying its behavior. It is a continuous practice that simplifies design, improves namings, identifies and removes code smells, and improves testability and maintainability. To become a pro in refactoring, one should practice aggressive refactoring at small scales, master the refactoring hotkeys of their IDE, use mutation testing before refactoring code, turn comments into well-named components, follow the Rule of Three for removing duplication, separate refactoring from changing behavior, and use TDD to make refactoring a core part of development.

  4. 4
    Article
    Avatar of communityCommunity Picks·2y

    Good software development habits

    Forming good software development habits can significantly enhance speed and maintain quality. Key practices include making small commits, continuous refactoring, prioritizing working software, creating new modules for disparate functions, and focusing on test-driven development (TDD) to anticipate edge cases. Avoid duplications, accept that designs evolve, and understand different types of technical debt. Lastly, ensure that testability is a priority to indicate good design.

  5. 5
    Article
    Avatar of communityCommunity Picks·2y

    10 Software Design and Programming Best Practices for Developers

    This post outlines 10 essential software design best practices that developers can learn quickly to improve code quality, maintainability, and efficiency. It covers key principles such as modularity, encapsulation, consistent naming conventions, SOLID principles, DRY, separation of concerns, error handling, comments and documentation, test-driven development (TDD), and performance considerations.

  6. 6
    Article
    Avatar of communityCommunity Picks·2y

    Understanding Tdd vs Bdd : A Guide For Developers

    TDD (Test Driven Development) and BDD (Behavior Driven Development) are two development approaches that emphasize testing and collaboration but have distinct differences. TDD is developer-centric and focuses on code correctness, while BDD is user-centric and revolves around system behavior. TDD involves writing tests before code, whereas BDD involves writing behavior specifications before code. Both methodologies can be complementary, with TDD ensuring technical correctness and BDD ensuring the application meets user expectations. Examples and steps to implement each approach are provided.

  7. 7
    Article
    Avatar of communityCommunity Picks·2y

    🧠 How to be a great software engineer without using your brain.

    Learn how to be a successful software engineer without using excessive brainpower. Discover work methodologies and practices that can help simplify complexity. Explore the difference between TDD and BDD.

  8. 8
    Article
    Avatar of communityCommunity Picks·2y

    TDD - Rewriting 3 million lines of code

    Andreas Frömer, Head of Software Development at Finanztip, successfully used TDD to rewrite a legacy application consisting of 3 million lines of code. Key lessons include starting with system level tests to avoid regression bugs and using feature flags to replace old code while retaining system behavior. The approach emphasizes starting with system level tests before moving to component tests and applying TDD for both rewriting and refactoring.

  9. 9
    Article
    Avatar of communityCommunity Picks·2y

    Impactful Web Development Projects in 8 steps

    Impactful web development projects start with intention. This guide emphasizes understanding your audience, starting with local businesses, building reusable templates, prioritizing accessibility, and using Test-Driven Development (TDD). Foster real client relationships, develop effective pricing strategies, and transition from creating a portfolio to building a sustainable business. Finally, focus on long-term branding to distinguish yourself in the competitive field of web development.

  10. 10
    Article
    Avatar of controversycontroversy.dev·1y

    AI makes good devs more productive, but it makes bad devs worse

    AI can enhance the productivity of skilled developers by assisting in coding tasks, but it can also result in poor code if not properly managed. Understanding bad code and utilizing practices like TDD are crucial for effective use of AI in software development.

  11. 11
    Article
    Avatar of controversycontroversy.dev·2y

    To TDD, or not to TDD, that is the question

    The post invites a discussion on the pros and cons of Test Driven Development (TDD), seeking various perspectives on its effectiveness and challenges.

  12. 12
    Video
    Avatar of continuousdeliveryContinuous Delivery·1y

    What TDD Looks Like In A REAL PROJECT (With Code Examples)

    Test-driven development (TDD) is often seen as tricky to implement in real-world projects. The post discusses the advantages of TDD, such as encouraging simpler and more testable code designs, and provides a practical example from an open-source project. It highlights the differences between teaching TDD using simple exercises and applying it to complex, real-world scenarios. The post also covers the use of internal DSLs for acceptance testing and demonstrates some coding practices for effective TDD.

  13. 13
    Article
    Avatar of communityCommunity Picks·2y

    Test-Driven Laravel

    Learn how to build robust Laravel applications using Test-Driven Development (TDD) through a comprehensive 22-hour video course. Gain insights from real-world challenges and develop features for a marketable product, TicketBeast, while covering fundamentals and advanced topics. The course includes practical advice, hands-on lessons, and custom tools to streamline the learning experience.

  14. 14
    Article
    Avatar of bitfieldconsultingBitfield Consulting·2y

    Shameless green: TDD in Go — Bitfield Consulting

    A deep dive into Test-Driven Development (TDD) in Go. The post illustrates the 'Shameless Green' approach in TDD, where the primary focus is on passing the test rather than writing perfect code. It explains how to validate and refine tests using the cmp.Diff function for better debugging and demonstrates the utility of table-driven tests in handling multiple test cases efficiently. Ends by stressing the importance of writing new tests for new behaviors.

  15. 15
    Article
    Avatar of awegoAwesome Go·2y

    Full Introduction to Golang with Test-Driven Development. Part I

    This post provides a comprehensive introduction to Golang with a focus on Test-Driven Development (TDD). It guides you through writing a classic 'Hello, World!' program using TDD principles, including creating and organizing folders, initializing a Go module, and writing functional tests. It also covers the basics of Go packages, the `go.mod` file, and the use of the `fmt` package for printing to the terminal.

  16. 16
    Article
    Avatar of substackSubstack·2y

    TDD: 5 test smells - 5 solutions

    Learn about common test smells in Test-Driven Development and how to fix them.

  17. 17
    Article
    Avatar of atomicobjectAtomic Spin·2y

    Tips for Using React Testing Library to Write Unit Tests

    Unit testing ensures code functions as expected. Test-driven development (TDD) at Atomic Object involves writing tests based on code requirements first. This post offers tips for using React Testing Library efficiently, such as choosing the right query method (getBy, findBy, queryBy), avoiding multiple assertions in a waitFor, and using screen instead of destructuring functions from render. Also, using an ESLint plugin can help avoid common pitfalls.

  18. 18
    Article
    Avatar of circleCircleCI·2y

    Test-driven development (TDD) explained

    Test-driven development (TDD) is a software development process that involves writing tests for your code before you write the code. TDD enhances collaboration, leads to more robust applications, and improves design and architecture. It also reduces long-term costs and increases confidence in code changes. TDD aligns perfectly with the objectives of continuous integration/continuous delivery (CI/CD) by ensuring code quality, enabling early bug detection, and facilitating automated testing.

  19. 19
    Article
    Avatar of substackSubstack·2y

    Why you need TDD

    TDD is the fastest and safest way to write code and it helps manage complexity, minimizes debugging, and provides 100% code and behavior coverage. It is advocated by top engineers in the industry.

  20. 20
    Article
    Avatar of lambdatestLambdaTest·2y

    TDD vs BDD: Selecting The Suitable Framework

    A comparison between TDD and BDD, implementation of TDD, and advantages of BDD.

  21. 21
    Video
    Avatar of primeagenThePrimeTime·1y

    The Future of Programming

    In almost 2025, a new programming language called Mir has been developed, designed for use with AI. Mir simplifies programming by using an AI-powered functional peer experience to produce JavaScript. The language focuses on signature-based grammar, avoiding traditional coding but retaining the need to write tests. The author explores Mir's peculiarities and challenges, including its unconventional syntax and limitations. Despite its potential, Mir's AI-driven approach produces inconsistent results, highlighting the ongoing need for human coding skills and problem-solving capabilities.