Skip to content

Commit 2fbc9f2

Browse files
authored
Add coding principles content (yakimka#2)
* Add coding principles content * Refresh contributors * Update with coding principles content
1 parent 65a5f56 commit 2fbc9f2

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,12 @@
231231
+ [Наследование](questions.md/#Наследование)
232232
+ [Полиморфизм](questions.md/#Полиморфизм)
233233
+ [Абстракция](questions.md/#Абстракция)
234-
* [SOLID, что означает, общее понимание](questions.md/#SOLID-что-означает-общее-понимание)
234+
* [Какие принципы программирования вы знаете](questions.md/#Какиe-принципы-программирования-вы-знаете)
235+
+ [KISS](questions.md/#KISS)
236+
+ [DRY](questions.md/#DRY)
237+
+ [YAGNI](questions.md/#YAGNI)
238+
+ [SLAP](questions.md/#SLAP)
239+
+ [SOLID принципы](questions.md/#SOLID-принципы)
235240
* [Что такое code cohesion & code coupling](questions.md/#Что-такое-code-cohesion--code-coupling)
236241
* [Какие шаблоны проектирования вы знаете](questions.md/#Какие-шаблоны-проектирования-вы-знаете)
237242
+ [Порождающие (Creational)](questions.md/#Порождающие-Creational)

contributors.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
yakimka: https://github.com/yakimka
1+
- yakimka: https://github.com/yakimka
2+
- pavlenk0: https://github.com/pavlenk0

questions.epub

1.53 KB
Binary file not shown.

questions.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2130,7 +2130,31 @@ HTTPS — расширение протокола HTTP, поддерживающ
21302130
Часто путают с инкапсуляцией, потому что и то и другое косвенно влияет на формирование публичного интерфейса типа.
21312131
Довольно тривиальная парадигма и поэтому часто не указывается как таковая.
21322132

2133-
## SOLID, что означает, общее понимание
2133+
## Какие принципы программирования вы знаете
2134+
2135+
- [10 Coding principles and acronyms demystified!](https://areknawo.com/10-coding-principles-and-acronyms-demystified/)
2136+
2137+
### KISS
2138+
2139+
Принцип *Keep It Stupid Simple* («Придерживайся простоты») велит вам следить за тем, чтобы код оставался как можно более простым. Чем код проще, тем легче в нем разобраться, как вам, так и другим людям, занимающимся его поддержкой. Под простотой главным образом имеется в виду отказ от использования хитроумных приемов и ненужного усложнения.
2140+
2141+
В качестве примеров нарушения этого принципа можно назвать написание отдельной функции только лишь для осуществления операции сложения или использование побитового оператора (right shift >> 1) для деления целых чисел на 2. Последнее, безусловно, более эффективно, чем обычное (/2), но при этом очень сильно снижается понятность кода. Применяя такой подход, вы осуществляете clever coding («заумный кодинг») и over-optimization (чрезмерную оптимизацию). И то, и другое в долгосрочной перспективе не слишком хорошо сказывается на здоровье вашего кода.
2142+
2143+
### DRY
2144+
2145+
Принцип *Don’t Repeat Yourself* («Не повторяйся») напоминает нам, что каждое повторяемое поведение в коде следует обособлять (например, выделять в отдельную функцию) для возможности многократного использования. Когда у вас в кодовой базе есть два совершенно одинаковых фрагмента кода, это не хорошо. Это часто приводит к рассинхронизации и прочим багам, не говоря уже о том, что от этого увеличивается размер программы.
2146+
2147+
### YAGNI
2148+
2149+
Принцип *You Aren’t Gonna Need It* («Тебе это не понадобится») говорит о том, что нежелательно оставлять в продакшене «точки расширения» (места, предназначенные только для того, чтобы позволить вам в будущем легко добавить новый функционал). Конечно, мы не говорим о случаях, когда речь идет об уже заказанном функционале. Такие точки расширения вносят ненужную сложность и увеличивают размер вашей кодовой базы.
2150+
2151+
### SLAP
2152+
2153+
Принцип *Single Level of Abstraction Principle* («Принцип единого уровня абстракций») означает, что функции должны иметь единый уровень абстракции. Скажем, функция, читающая input, не должна также обрабатывать полученные данные. Для этого она должна задействовать отдельную функцию, находящуюся на другом, более низком уровне абстракции. Чем более общей является функция и чем больше других функций она использует, тем выше она располагается в абстракционной иерархии.
2154+
2155+
### SOLID принципы
2156+
2157+
*SOLID* - это аббревиатура от 5 принципов, описанных Робертом Мартином, которые способствуют созданию хорошего объектно-ориентированного (и не только) кода.
21342158

21352159
**S**: Single Responsibility Principle (Принцип единственной ответственности).
21362160
>Каждый класс должен решать лишь одну задачу.

0 commit comments

Comments
 (0)