Подсказки для проявления общих черт в файлах

Бывшие силы Вы для вызывания функции с myfunc (& b), таким образом, вызывающая сторона знает, что b будет изменен

иногда, функция могла принять указатель константы, и у вызывающей стороны будут неправильно взгляды, что b будет изменен.

Моя рекомендация - предпочитает ссылки использования везде, где это возможный (ofcourse, где этому было нужно). В случае, если с аргументом функции - мы извлекаем пользу:
- ссылки не могут быть НУЛЕВЫМИ - это помогает нам избежать, чтобы ошибки и ненужный утверждали или проверили.
- ссылки имеют только одну точку инициализации, и в функции boody Вы всегда знают на том, какая вещь вводила точки параметра.

я - специалист по обслуживанию на крупном проекте. И в любом случаи я считаю функциональное определение перед вызовом. Конечно, когда я считающий функциональное определение я вижу определение аргументов значением, ссылкой, ссылкой константы или указателем.

, Но это походит на вопрос о священной войне, у почтительных народов есть другое представление по этому вопросу. Например, Google, вводящий конвенцию в заблуждение, рекомендовал указатели использования в аргументах, которые могли быть изменены и позволены только ссылки константы: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments

Все параметры, переданные ссылкой, должны быть маркированы константа

8
задан skaffman 31 July 2011 в 20:40
поделиться

3 ответа

Попробуйте Simian .

Он используется для обнаружения копирования-вставки в исходном коде (Java, C #, C, C ++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy), но вы также можете запустить это и для простых текстовых файлов.

5
ответ дан 5 December 2019 в 15:25
поделиться

На sourceforge есть проект Copy-Paste Detection (CPD); http://pmd.sourceforge.net/cpd.html

Но даже в больших проектах я считаю, что мои собственные знания кода являются надежным (хотя и не надежным) механизмом обнаружения.

Также см. этот вопрос для других предложений.

4
ответ дан 5 December 2019 в 15:25
поделиться

Наш Semantic Designs CloneDR - это инструмент, который обнаруживает блоки кода для копирования, вставки и редактирования для многих языков: C, C ++, Java, C ++, COBOL, ECMAScript, PHP, VB6, VB.net, ...

Он использует точные для языка синтаксические анализаторы для построения абстрактных синтаксических деревьев, соответствующих точным программным структурам, которые затем сравниваются на предмет сходства. Это означает, что его никоим образом не путают пробелы, форматирование, комментарии или даже другое "написание" литералов (например, 3.14159 это то же самое, что .00314150E3).

Он генерирует отчет, который показывает точно , насколько блоки кода похожи и как именно они меняются. Посмотреть образцы отчетов можно по ссылке.

2
ответ дан 5 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: