0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<h3>Код на Ревью</h3>
1
<h3>Код на Ревью</h3>
2
<h3>Контрольные точки</h3>
2
<h3>Контрольные точки</h3>
3
<ul><li>Понятно ли с первого взгляда что делает функция (основываясь на содержимом)?</li>
3
<ul><li>Понятно ли с первого взгляда что делает функция (основываясь на содержимом)?</li>
4
<li>Попробуйте воспроизвести определение понятия "Вес Хемминга", глядя только на код</li>
4
<li>Попробуйте воспроизвести определение понятия "Вес Хемминга", глядя только на код</li>
5
</ul><h3>Спецификация</h3>
5
</ul><h3>Спецификация</h3>
6
<p>Вес Хэмминга это количество единиц в двоичном представлении числа. Реализуйте функцию hammingWeight, которая считает вес Хэмминга.</p>
6
<p>Вес Хэмминга это количество единиц в двоичном представлении числа. Реализуйте функцию hammingWeight, которая считает вес Хэмминга.</p>
7
<h3>Проблемы</h3>
7
<h3>Проблемы</h3>
8
<blockquote><p>Ничего не говорящие и запутывающие имена переменных</p>
8
<blockquote><p>Ничего не говорящие и запутывающие имена переменных</p>
9
</blockquote><p>Как известно, именование переменных является одной из самых сложных задач в разработке, и данный пример это подтверждает. Плохие имена не только не помогают читать код, но и могут запутывать. В данном примере переменная $weight это, на самом деле, исходное число, а вес это $amount.</p>
9
</blockquote><p>Как известно, именование переменных является одной из самых сложных задач в разработке, и данный пример это подтверждает. Плохие имена не только не помогают читать код, но и могут запутывать. В данном примере переменная $weight это, на самом деле, исходное число, а вес это $amount.</p>
10
<p>Имя $array не запутывает, но и не помогает. Разумно, в данном случае, было назвать переменную $digits, что соответствует сути.</p>
10
<p>Имя $array не запутывает, но и не помогает. Разумно, в данном случае, было назвать переменную $digits, что соответствует сути.</p>
11
<blockquote><p>Алгоритм вычисления веса опирается не на спецификацию, а на корреляцию</p>
11
<blockquote><p>Алгоритм вычисления веса опирается не на спецификацию, а на корреляцию</p>
12
</blockquote><p>По случайному совпадению оказалось что можно сложить все цифры, из которых состоит число в двоичном представлении, и мы получим вес Хемминга. Да, это сработает, и этим фактом воспользовался автор, но определение веса Хемминга звучит совсем по-другому. Это приводит к семантическому разрыву. По коду сложно понять и восстановить описание, так же верно и обратное. После знакомства с определением трудно увидеть в коде его реализацию.</p>
12
</blockquote><p>По случайному совпадению оказалось что можно сложить все цифры, из которых состоит число в двоичном представлении, и мы получим вес Хемминга. Да, это сработает, и этим фактом воспользовался автор, но определение веса Хемминга звучит совсем по-другому. Это приводит к семантическому разрыву. По коду сложно понять и восстановить описание, так же верно и обратное. После знакомства с определением трудно увидеть в коде его реализацию.</p>
13
<blockquote><p>Алгоритм опирается на особенности типизации в php</p>
13
<blockquote><p>Алгоритм опирается на особенности типизации в php</p>
14
</blockquote><p>PHP обладает, так называемой, слабой типизацией. Это означает, что PHP автоматически преобразует типы операндов в различных операциях, вместо того, чтобы сообщить об ошибке. Например, при сложении числа со строкой. Слабая типизация - это источник большого количества проблем и странного поведения программы при определенных входных данных. Это относится не только к php, в javascript ситуация точно такая же.</p>
14
</blockquote><p>PHP обладает, так называемой, слабой типизацией. Это означает, что PHP автоматически преобразует типы операндов в различных операциях, вместо того, чтобы сообщить об ошибке. Например, при сложении числа со строкой. Слабая типизация - это источник большого количества проблем и странного поведения программы при определенных входных данных. Это относится не только к php, в javascript ситуация точно такая же.</p>
15
<blockquote><p>Подписывайтесь на<a>канал Кирилла Мокевнина в Telegram</a>- чтобы узнать больше о программировании и профессиональном пути разработчика</p>
15
<blockquote><p>Подписывайтесь на<a>канал Кирилла Мокевнина в Telegram</a>- чтобы узнать больше о программировании и профессиональном пути разработчика</p>
16
</blockquote><h3>Вывод</h3>
16
</blockquote><h3>Вывод</h3>
17
<p>Функция выглядит магической и требует время на осознание. Перед тем как она будет понята, смотрящему придется увидеть указанную корреляцию.</p>
17
<p>Функция выглядит магической и требует время на осознание. Перед тем как она будет понята, смотрящему придется увидеть указанную корреляцию.</p>
18
<h3>Решение</h3>
18
<h3>Решение</h3>
19
<p>Использовать реализацию основанную на определении понятия "вес Хемминга".</p>
19
<p>Использовать реализацию основанную на определении понятия "вес Хемминга".</p>
20
20