Чтобы подражать точному шаблону в вашей команде grep
, выполните
import re
pattern = re.compile('|'.join(key_words))
for log_line in log_lines:
if pattern.search(log_line):
print log_line
. Если вы хотите разрешить специальные символы, вам придется их избегать:
pattern = re.compile('|'.join(re.escape(word) for word in key_words))
Как вы можете себе представить, использование регулярных выражений в этом случае немного излишне. Вместо этого вы можете сделать прямой поиск. Вы можете использовать any
, чтобы помочь с поиском, так как он замкнут.
for log_line in log_lines:
if any(word in log_line for word in key_words):
print log_line
Выполняет линейный поиск всей строки для каждого ключевого слова. Вы можете сделать это немного более эффективным, если ключевые слова предназначены для фактических слов, тем более что у вас уже есть набор для ключевых слов:
for log_line in log_lines:
if keywords.intersection(set(log_line.split()):
print log_line
Обычно существует три цели для кодирования стандартов:
Очевидно, третьими является трата всех время else, но действительно необходимо рассмотреть это, конкретно таким образом, Вы не идете по той дороге.
Однако существует некоторый определенный do's и dont's, который я заметил:
m_member
, программист обслуживания должен использовать m_member2
вместо того, чтобы применять любой другой стандарт (такой как member2_
или m_lpcstrMember2
или безотносительно). Локальная непротиворечивость является королем.Наконец, самая важная вещь состоит в том, чтобы иметь регулярные обзоры кода между коллегами. Поощрите людей говорить, когда они будут видеть, что "код пахнет". Также убедитесь, что люди понимают, что конструктивная критика кода не предназначена, чтобы быть персональной - источник совместно используется всеми в команде, это только принадлежит исходному автору. По моему опыту, самыми отвратительными проблемами были проблемы проектирования, которые не были бы решены никаким объемом кодирования инструкций. Разработка программного обеспечения является все еще чем-то вроде вида искусства (для лучше или для худшего), и пул мозгов намного лучше, чем единственный.
if( !codingGuidelines.Followed)
{
reason = programmer.WhyNot();
if( reason.Acceptable)
{
codingGuidelines.Integrate( reason);
}
else
{
team.GiveAssKicking(programmer);
}
}
Это - довольно нерешенный вопрос, и ответ одинаково открыт:
Каждая инструкция должна стоить меньше для реализации, чем преимущество, которое она приносит.
Будьте осторожны, потому что каждая сторона уравнения имеет некоторые скрытые части.
Стоимость реализации может включать, исключая совершенно хорошие альтернативы, задыхаясь creativty и инновации, и поощряя обзоры кода ухудшиться в выделение незначительных нарушений стиля вместо того, чтобы решить реальные проблемы.
Значение преимуществ может быть неосязаемо (и следовательно разбивающий) занятому разработчику второпях, но могло бы привести к Вашему организационному бренду, являющемуся более сильным или приносящим новым штатом на проект, являющийся быстрее - что-то, что могло бы перевесить маленькую возрастающую стоимость соответствия.
Как разработчик, я обычно предпочитаю, чтобы инструкции дали основные указания, но не быть столь строгим, что я не могу кодировать, как мне нравится..., например, если инструкция говорит мне, что кодирование шаблонов должно использоваться вместо того, чтобы позволить мне делать своим собственным профессиональным решением затем, это слишком трудно:
Например, это тип вещей, которые я мог бы ожидать видеть:
Вы получаете изображение. Я не должен быть ограничен для наполнения как:
Стили кодирования, очевидно, должны быть распространены через команду, чтобы позволить разработчикам мочь сотрудничать эффективно. У Вас не может быть одного человека путь там на левой стороне поля с помощью сложных математических алгоритмов, которые никто больше в команде не может понять и иметь иначе на правой стороне поля, кто может едва постигать реализацию интерфейсов. Таким образом, как эмпирическое правило, они должны быть разработаны, чтобы помочь держать Вашу команду вместе, не ослабляя производительность и креативность.
Получите некоторый вход от своей группы разработчиков в целом так, чтобы стандарт "дома" мог включить все, что это должно и не включать набор материала, это не было должно.
Кодирующие инструкции там, чтобы помочь другим прочитать Ваш код. Даже если Вы - написание кода для себя и являетесь единственным разработчиком, может быть полезно найти ряд инструкций обычно принимаемым в промышленности и придерживаться их. Это поможет Вам прочитать другой код народов и Вам для вписывания в более многочисленную команду позднее.
При использовании .NET смотрите на StyleCop. По умолчанию это содержит стандарты, которые MS использует сами и используемый для разработки платформы .NET на основе. Можно получить его отсюда:
http://code.msdn.microsoft.com/sourceanalysis
Можно отключить правила, Вы не любите и добавляете свое собственное. Это может даже быть задано сценарием для осуществления правил, когда в коде регистрируются. Большая вещь об этом состоит в том, что, если Вы действительно плохо знакомы с этим видом материала, он скажет Вам точно, что Вы делаете неправильно. Если Вы хотите пойти один шаг вперед, смотреть на Resharper. Это - тот же вид вещи, но делает это в режиме реального времени, как Вы вводите (хотя по умолчанию это использует немного отличающийся стандарт.
Я уверен, что существуют подобные утилиты вокруг других языков, если c# не является Вашей вещью!
Инструкции по кодированию C# Juval Lowy являются превосходным примером надлежащей инструкции. У меня есть несколько вещей, которые я изменил бы в нем, но по большей части это фантастически.
В целом я хотел бы, чтобы инструкции ответили на вопросы, которые Вы будете обычно задавать, но заняли бы слишком много времени отвечать, и это могло бы быть "персональным предпочтением", если бы Вы просто кодировали один. Обычно они указывают содержательные вещи как соглашения о присвоении имен базы данных и пробелы по сравнению с вкладками (и сколько пробелов), а также комментирующий / комментарий для документации разрабатывает.
Инструкции UI являются другим зверем, чем другие, я думаю.
Одним из моих любимых примеров инструкций по стилю кодирования является стиль кодирования ядра Linux, хотя он не входит в специфические особенности, которые я видел в других руководствах.
Я хочу, чтобы документ стандартов кодирования разрешил религиозные аргументы в пользу команды.
Для вопросов, где существует несколько стоящих ответов и людей, имеют тенденцию спорить о них в течение долгого времени, мы хотим получить непротиворечивость через целый проект и постараться не проводить много времени, обсуждая их.
Хорошими примерами являются "ВКЛАДКИ по сравнению с Пробелами" и "K&R по сравнению с размещением фигурной скобки ANSI". Проведите опрос в команде, примите решение и запишите ее. Примените решение ко всему своему существующему коду сразу и регистрируйте его отдельно. Никогда не обсуждайте это снова.
Мне также нравится идея стиля кодирования, помогающего разработчикам визуально определить плохой / содержащий ошибки код. Например, включая тип переменной на ее имя может помочь в будущем, если кто-то должен случайно присвоить интервалу значение плавающее или что-то как этот.
Завершенный код является превосходной книгой по общим лучшим практикам программирования и инструкциями, которые могут быть применены к любому языку.
Это покрывает все аспекты программирования и является необходимостью чтение для практического программиста, который хочет сделать вещи "лучший" путь к каждой проблеме, с которой встречаются.
Кодирующие инструкции являются поведенческими правилами для Вашего teammembers, так, чтобы можно было прочитать код eachothers без слишком большой проблемы.
Это также получает "скобку на новой строке или на той же строке" обсуждения из пути на Ваших консультациях кода, который экономит много времени ;-)
Когда инструкции по написанию кода, удостоверьтесь, что они там по причине, и что они на самом деле помогают Вашей команде на написании большего количества читаемого кода.