К содержимому
learnspaceYOUR NEXT CHAPTER
ПРОСТРАНСТВО ОБУЧЕНИЯ
ГлавнаяКаталог курсовМоё обучениеCoursera

Знания без границ

Учитесь у лучших университетов и компаний мира.

Открыть Coursera
Интеграция
Пространство университета
Моё пространствоСтраница курса
↵
ЯЛичный кабинетСтудент
© 2026 LearnSpaceКаждый день — возможность узнать больше.Помощь
Writing Clean Code: 20 Code Smells & How to Avoid Them · LearnSpace
Назад в каталог
courseraПрограммирование

Writing Clean Code: 20 Code Smells & How to Avoid Them

Курс от Packt
Средний≈ 18.4 чАнглийский
О курсеНавыкиПрограммаПреподаватели

О курсе

This course features Coursera Coach! A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. In this course, you will learn how to identify and eliminate common "code smells" that can degrade the quality and maintainability of your software. You'll gain hands-on strategies for improving your codebase, from identifying inefficient loops to eliminating unnecessary exceptions. Each lesson focuses on a specific code smell and guides you through the best practices to refactor and optimize your code for long-term health. The course begins by exploring the fundamental principles of clean software design, introducing you to key concepts like the SOLID principles and modular design. As you progress, you will dive deep into specific code smells such as "Primitive Obsession," "Feature Envy," and "Shallow Modules," each accompanied by real-world examples and actionable solutions. By the end of this course, you will be able to confidently analyze, refactor, and improve a codebase to enhance readability, performance, and maintainability. Whether you're a junior developer or an experienced software engineer, this course will help you refine your skills and develop cleaner, more sustainable code. This course is ideal for software developers and engineers looking to improve their coding practices, enhance the maintainability of their projects, and master the art of writing clean, efficient code. A basic understanding of programming principles is recommended.

Навыки, которые вы освоите

MaintainabilityObject Oriented DesignSoftware DesignCode ReusabilityScalabilitySoftware ArchitectureProgramming PrinciplesObject Oriented Programming (OOP)

Программа курса

24 модулей · 117 учебных материалов

01Getting Started with the Course2 материалов

Getting Started with the Course

Welcome and Introduction!ВидеоFull Course ResourcesЧтение
02Software Design Fundamentals and SOLID Principles9 материалов

Software Design Fundamentals and SOLID Principles

Key Principles of Effective Software DesignВидео

Учитесь у экспертов

Packt - Course Instructors

Преподаватель курса

Writing Clean Code: 20 Code Smells & How to Avoid Them
В каталоге вашей программы

Инвестируйте в себя

Новые знания — в удобное для вас время.

Начать на Coursera

Обучение откроется на Coursera
в новой вкладке

Обучение на Coursera

≈ 18.4 ч

24 модулей

Язык: Английский

Субтитры: Арабский, Французский, Итальянский, Корейский, Немецкий, Индонезийский, Испанский, Японский

Часть программы вашего университета
Writing Deep, Well-Structured ModulesВидео
SOLID Principles: The Single Responsibility PrincipleВидео
SOLID Principles: The Open/Closed PrincipleВидео
SOLID Principles: The Liskov Substitution PrincipleВидео
SOLID Principles: The Interface Segregation PrincipleВидео
SOLID Principles: The Dependency Inversion PrincipleВидео
Exploring Software Design Principles with SOLIDDIALOGUE
Software Design Fundamentals and SOLID Principles - AssessmentЗадание
03Understanding and Navigating the Code Base3 материалов

Understanding and Navigating the Code Base

Navigating and Understanding the Code BaseВидеоRecognizing and Remedying Code SmellsDIALOGUEUnderstanding and Navigating the Code Base - AssessmentЗадание
04Repeated Switches5 материалов

Repeated Switches

What Are Repeated Switches?ВидеоIdentifying Repeated Switch Statements in CodeВидеоRefactoring and Improving Switch StatementsВидеоAvoiding Repeated Code with Switch StatementsDIALOGUERepeated Switches - AssessmentЗадание
05Primitive Obsession5 материалов

Primitive Obsession

What Is Primitive Obsession?ВидеоIdentifying Overuse of Primitives in CodeВидеоRefactoring Primitive Obsession for Better AbstractionВидеоUnderstanding Primitive ObsessionDIALOGUEPrimitive Obsession - AssessmentЗадание
06Loops5 материалов

Loops

What Are Inefficient Loops?ВидеоCommon Loop Code Smells and Their PitfallsВидеоRefactoring LoopsВидеоEnhancing Code with Pipeline StructuresDIALOGUELoops - AssessmentЗадание
07Long Parameter List5 материалов

Long Parameter List

What Are Long Parameter Lists?ВидеоIdentifying Long Parameter Lists in CodeВидеоReducing and Simplifying ParametersВидеоRefactoring Long Parameter ListsDIALOGUELong Parameter List - AssessmentЗадание
08Knowledge Duplication5 материалов

Knowledge Duplication

What Is Knowledge Duplication?ВидеоIdentifying Repeated Knowledge and Its ConsequencesВидеоEliminating Redundancy for More Maintainable CodeВидеоUnderstanding and Eliminating Knowledge DuplicationDIALOGUEKnowledge Duplication - AssessmentЗадание
09Uninformative Comments5 материалов

Uninformative Comments

What Are Uninformative Comments?ВидеоIdentifying Comment Code Smells in a CodebaseВидеоWriting Meaningful Comments and Removing Redundant OnesВидеоIdentifying and Improving Code CommentsDIALOGUEUninformative Comments - AssessmentЗадание
10Shotgun Surgery5 материалов

Shotgun Surgery

What Is Shotgun Surgery?ВидеоIdentifying Code That Requires Scattered ChangesВидеоRefactoring to Reduce Shotgun SurgeryВидеоUnderstanding and Addressing 'Shotgun Surgery' Code SmellDIALOGUEShotgun Surgery - AssessmentЗадание
11Alternative Classes with Different Interfaces5 материалов

Alternative Classes with Different Interfaces

What Are Alternative Classes with Inconsistent Interfaces?ВидеоIdentifying Class Design Issues in CodeВидеоRefactoring to Ensure Consistent InterfacesВидеоSolving Alternative Classes with InterfacesDIALOGUEAlternative Classes with Different Interfaces - AssessmentЗадание
12Refused Bequest5 материалов

Refused Bequest

What Is Refused Bequest?ВидеоIdentifying Misuse of Inheritance in CodeВидеоRefactoring to Improve Code InheritanceВидеоDealing with the Refused Bequest Code SmellDIALOGUERefused Bequest - AssessmentЗадание
13Data Clumps5 материалов

Data Clumps

What Are Data Clumps?ВидеоIdentifying Poorly Structured Data in CodeВидеоRefactoring Data Clumps for Better MaintainabilityВидеоRefactoring Data Clumps with EncapsulationDIALOGUEData Clumps - AssessmentЗадание
14Middle-Man5 материалов

Middle-Man

What Is the Middle-Man Code Smell?ВидеоIdentifying Unnecessary Abstractions in CodeВидеоSimplifying Code by Removing Middle-Man ClassesВидеоRefactoring Middleman Code SmellDIALOGUEMiddle-Man - AssessmentЗадание
15Mutable Data5 материалов

Mutable Data

What Is Mutable Data?ВидеоIdentifying Mutable State and Its PitfallsВидеоImplementing Safer Approaches to Data ManagementВидеоAvoiding Mutable Data PitfallsDIALOGUEMutable Data - AssessmentЗадание
16Feature Envy5 материалов

Feature Envy

What Is Feature Envy?ВидеоIdentifying Poor Object Boundaries in CodeВидеоRefactoring to Reduce Feature EnvyВидеоIdentifying and Refactoring Feature EnvyDIALOGUEFeature Envy - AssessmentЗадание
17Divergent Change5 материалов

Divergent Change

What Is Divergent Change?ВидеоIdentifying Code That Requires Frequent ModificationsВидеоRefactoring to Reduce Divergent ChangeВидеоUnderstanding Divergent ChangeDIALOGUEDivergent Change - AssessmentЗадание
18Large Interfaces5 материалов

Large Interfaces

What Are Large Interfaces?ВидеоIdentifying Bloated Interfaces in CodeВидеоRefactoring to Reduce Interface ComplexityВидеоRefactoring Large Interfaces in CodeDIALOGUELarge Interfaces - AssessmentЗадание
19Multitaskers5 материалов

Multitaskers

What Are Multitaskers?ВидеоIdentifying Overloaded Classes and FunctionsВидеоRefactoring to Improve Single ResponsibilityВидеоIdentifying and Refactoring Multitasker FunctionsDIALOGUEMultitaskers - AssessmentЗадание
20Unclear / Confusing Names5 материалов

Unclear / Confusing Names

What Are Unclear and Confusing Names?ВидеоIdentifying Unclear Naming in CodeВидеоStrategies for Writing Intuitive and Self-Explanatory NamesВидеоImproving Variable Names for Code ClarityDIALOGUEUnclear / Confusing Names - AssessmentЗадание
21Speculative Generality5 материалов

Speculative Generality

What Is Speculative Generality?ВидеоIdentifying Over-Engineered CodeВидеоSimplifying Code by Removing Unnecessary GeneralizationВидеоAvoiding Speculative GeneralityDIALOGUESpeculative Generality - AssessmentЗадание
22Unnecessary Exceptions5 материалов

Unnecessary Exceptions

What Are Unnecessary Exceptions?ВидеоIdentifying Overuse of Exceptions in CodeВидеоRefactoring to Simplify Exception HandlingВидеоAvoiding Unnecessary ExceptionsDIALOGUEUnnecessary Exceptions - AssessmentЗадание
23Shallow Modules5 материалов

Shallow Modules

What Are Shallow Modules?ВидеоIdentifying Weakly Encapsulated ModulesВидеоImproving Module Depth for Better ReusabilityВидеоUnderstanding and Refactoring Shallow ModulesDIALOGUEShallow Modules - AssessmentЗадание
24Final Thoughts and Course Wrap-Up3 материалов

Final Thoughts and Course Wrap-Up

Course Wrap-Up and Final ThoughtsВидеоFull Course Practice AssessmentЗаданиеFull Course AssessmentЗадание