HTML Diff
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