Бывшие силы Вы для вызывания функции с myfunc (& b), таким образом, вызывающая сторона знает, что b будет изменен
иногда, функция могла принять указатель константы, и у вызывающей стороны будут неправильно взгляды, что b будет изменен.
Моя рекомендация - предпочитает ссылки использования везде, где это возможный (ofcourse, где этому было нужно). В случае, если с аргументом функции - мы извлекаем пользу:
- ссылки не могут быть НУЛЕВЫМИ - это помогает нам избежать, чтобы ошибки и ненужный утверждали или проверили.
- ссылки имеют только одну точку инициализации, и в функции boody Вы всегда знают на том, какая вещь вводила точки параметра.я - специалист по обслуживанию на крупном проекте. И в любом случаи я считаю функциональное определение перед вызовом. Конечно, когда я считающий функциональное определение я вижу определение аргументов значением, ссылкой, ссылкой константы или указателем.
, Но это походит на вопрос о священной войне, у почтительных народов есть другое представление по этому вопросу. Например, Google, вводящий конвенцию в заблуждение, рекомендовал указатели использования в аргументах, которые могли быть изменены и позволены только ссылки константы: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Reference_Arguments
Все параметры, переданные ссылкой, должны быть маркированы константа
Попробуйте Simian .
Он используется для обнаружения копирования-вставки в исходном коде (Java, C #, C, C ++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy), но вы также можете запустить это и для простых текстовых файлов.
На sourceforge есть проект Copy-Paste Detection (CPD); http://pmd.sourceforge.net/cpd.html
Но даже в больших проектах я считаю, что мои собственные знания кода являются надежным (хотя и не надежным) механизмом обнаружения.
Также см. этот вопрос для других предложений.
Наш Semantic Designs CloneDR - это инструмент, который обнаруживает блоки кода для копирования, вставки и редактирования для многих языков: C, C ++, Java, C ++, COBOL, ECMAScript, PHP, VB6, VB.net, ...
Он использует точные для языка синтаксические анализаторы для построения абстрактных синтаксических деревьев, соответствующих точным программным структурам, которые затем сравниваются на предмет сходства. Это означает, что его никоим образом не путают пробелы, форматирование, комментарии или даже другое "написание" литералов (например, 3.14159 это то же самое, что .00314150E3).
Он генерирует отчет, который показывает точно , насколько блоки кода похожи и как именно они меняются. Посмотреть образцы отчетов можно по ссылке.