Skip to content

Commit 60e18cf

Browse files
committed
WIP
1 parent 6bcc481 commit 60e18cf

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

draft/006.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
В индустрии программирования принято считать, что код должен быть самодокументируемым.
2+
Это значит, что имена переменных, методов и классов должны объяснять, что происходит — без комментариев, без документации, без менторов.
3+
4+
Некоторые даже добавляют:
5+
6+
> «Пусть имя будет длинным, это делает код понятнее».
7+
8+
Нет. Не делает.
9+
Особенно если это имя — дымовая завеса над тем, что в коде нет ни логики, ни смысла.
10+
11+
12+
Рассмотрим наглядный пример, достойный быть высеченным в граните Legacy-кода:
13+
14+
```php
15+
abstract class AbstractContextHandler implements ContextHandlerInterface
16+
{
17+
use SemanticMapper;
18+
19+
public string $moduleNamespaceScopeIdentifier = 'reporting_contextualization_subsystem';
20+
21+
public function process(array $contextualizedComponentUnitPayloadArray): array
22+
{
23+
$moduleScopedResponseUnits = [];
24+
25+
foreach ($contextualizedComponentUnitPayloadArray as $contextBoundSemanticUnit) {
26+
$moduleScopedResponseUnits[] = $this->transformComponentContextUnit($contextBoundSemanticUnit);
27+
}
28+
29+
return $moduleScopedResponseUnits;
30+
}
31+
32+
protected function transformComponentContextUnit($contextBoundSemanticUnit): array
33+
{
34+
return [
35+
'encodedContextualPayloadFragment' => $this->map($contextBoundSemanticUnit),
36+
'componentUnitIntegrityChecksum' => sha1(serialize($contextBoundSemanticUnit)),
37+
'injectedContextualTagToken' => uniqid('module_ctx_unit_', true),
38+
'operationalModuleDomain' => $this->moduleNamespaceScopeIdentifier,
39+
];
40+
}
41+
}
42+
```
43+
44+
Что делает этот класс? Не ясно.
45+
Что он обрабатывает? Какой «контекст»? Какой «модуль»? Что за «единицы компонентов»?
46+
47+
Это типичный корпоративный анти-паттерн: взять простую задачу, обернуть её в кучу терминов, и сделать вид, что это архитектура.
48+
49+
50+
Если ты называешь переменную `injectedContextualTagToken`, ты не архитектор.
51+
Ты просто боишься назвать её `id`.
52+
53+
54+
55+
Этот код невозможно понять. Не потому что он глупый.
56+
А потому что этот код никогда ничего конкретного не делал

0 commit comments

Comments
 (0)