- 1
- 2
- 3
if [ "valid" == "$x" ]; then
echo "x has the value 'valid'"
fi
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−103
if [ "valid" == "$x" ]; then
echo "x has the value 'valid'"
fi
One last point (of style): <...> is better because it avoids the possibility of accidentally assigning the string "valid" to x.
Йода-стайл теперь и в вашем баше.
+127
<div>
<label for="background-color">Choose a calor for background : </label>
<input id="background-color" type="color" value="#ff0000" onchange="javascript:document.getElementById('chosen-color').value = document.getElementById('background-color').value;"/>
</div>
<div>
<label for="chosen-color">You have chosen : </label>
<input id="chosen-color" type="text" readonly value="#ff0000"/>
</div>
Кроме того что тут inline JS event, да к автор еще умудряется использовать document.getElementById('choosen-value').value вместо this.value .
+134
class ParametersArray
{
...
/// <summary>
/// Копирующей конструктор (создает копию коллекции)
/// </summary>
/// <param name="prs">Коллекция на основе, которой будет создаваться копия</param>
public ParametersArray(ParametersArray prs)
{
paParameters = new ArrayList();
for (int i = 0; i < prs.Count; i++)
{
Parameter p = new Parameter(prs[i]);
paParameters.Add(p);
}
}
...
#region Внутренние состояния
/// <summary>
/// Внутреннее поле - массив параметров
/// </summary>
private ArrayList paParameters;
/// <summary>
/// Внутреннее поле – идентификатор операции, к которой относятся параметры
/// </summary>
private string paOperationId = "";
#endregion
/// <summary>
/// Удаляет параметр из коллекции
/// </summary>
/// <param name="parameterId">Идентификатор параметра</param>
public void Delete(string parameterId)
{
ArrayList list = new ArrayList();
foreach (Parameter prt in paParameters)
{
if (prt.Id.Trim() != parameterId.Trim())
{
list.Add(prt);
}
}
paParameters = list;
}
}
}
...
/// <summary>
/// Класс для поиска и обработки шаблонов в параметрах операций
/// </summary>
public class Parser
{
...
#region Конструкторы
/// <summary>
/// Конструктор инициализирующей класс
/// </summary>
/// <param name="requestUserId">ID пользователя, который используется для обработки шаблона ##USER()</param>
public Parser(string requestUserId)
{
pParameters = null;
pUserId = requestUserId;
}
#endregion
#region Внешние методы
/// <summary>
/// Метод перебирает все параметры операции, ищет там шаблоны и заменяет их значениями
/// </summary>
/// <param name="opr">Операция</param>
/// <returns>Операция с обработанными шаблонами</returns>
public Operation Parse(Operation opr)
{
pParameters = new ParametersArray(opr.Parameters);
for (int i = 0; i < pParameters.Count; i++)
if (FindTemplate(pParameters[i]))
{
ReplaceTemplate(pParameters[i]);
//Удаляет параметр с ошибкой
if (pParameters[i].Value == "parse err")
pParameters.Delete(pParameters[i].Id);
}
opr.Parameters = new ParametersArray(pParameters);
return opr;
}
Внимание привлекает код в строках 81-95
В строке 81-82 мы создаём временную копию параметров операции opr во внутреннем поле класса Parser. Прекрасно. Ещё раз - в публичном в методе инициализируем внутреннее поле (Классный side effect - поле используется в других методах).
В строке 91 удаляет элемент из внутренней коллекции, пересоздавая коллекцию целиком, то есть требования к памяти временно удваиваются на выходе из метода Delete (до очистки памяти). В методе Delete. Да. Супер.
потом инициализируем вновь созданной коллекцией публичное поле Parameters во входящем параметре opr метода Delete.
P.S.: Диагноз - хроническая форма неизлечимой Java. Во первых, автор этих строк искренне думает, что в природе ничего, кроме коллекции ArrayList, не существует. Во вторых, для удаления элемента коллекции мы пересоздаём всю коллекцию целиком, то есть видимо искренне полагая, что коллекция ArrayList - immutable, как и все поля класса Parser (типа ParametersArray) равно как и поле класса ParametersArray (типа ArrayList). Занавес.
Говнокодище.
−99
@login_required
def datadelivery_stats_report(request, campaign_id):
try:
start_date = extract_date_to_default_timezone(request, 'start_date')
except ValidationError:
return HttpResponseServerError("The %s parameter is invalid." % 'start_date')
except AttributeError:
return HttpResponseServerError("The %s parameter is invalid." % 'start_date')
except KeyError:
return HttpResponseServerError("The %s parameter is missing." % 'start_date')
try:
end_date = extract_date_to_default_timezone(request, 'end_date')
except ValidationError:
return HttpResponseServerError("The %s parameter is invalid." % 'end_date')
except AttributeError:
return HttpResponseServerError("The %s parameter is invalid." % 'end_date')
except KeyError:
return HttpResponseServerError("The %s parameter is missing." % 'end_date')
Джанга такая джанга... Почему же нельзя выбросить ошибку валидации? 404 можно...
+129
# Превратим входную строку в вектор, и отсортируем
used_letter <- sort(strsplit(s, "")[[1]])
# Находим самый большой используемый индекс(у нас уже есть гарантии, что в строке остались только допустимые символы)
big_letter <- used_letter[length(used_letter)]
Оригинальный способ поиска максимального элемента в массиве
−96
{% verbatim %}{{ setExpireValue({% endverbatim %}{{ value }}{% verbatim %}) }}{% endverbatim %}
AngularJS + Django, люди доходят до ручки.
+153
document.body.innerHTML = document.body.innerHTML.replace(/guest/g, '');<
+170
$time_now=date('d');
$tomorrow =date('d')+'1';
Кого-то ожидает 32 декабря.
+86
public PriceComparator {
private PriceComparator INSTANCE;
public PriceComparator() {
INSTANCE = this;
}
public PriceComparator getInstance() {
return INSTANCE;
}
...
}
Singleton fail...
+159
function verifyType($type){
switch ($type){
case 'cs':
$this->serverType = $type;
require_once $this->serverType.'Inc.php';
break;
case 'css':
$this->serverType = $type;
require_once $this->serverType.'Inc.php';
break;
case 'cssold':
$this->serverType = $type;
require_once $this->serverType.'Inc.php';
break;
case 'samp':
$this->serverType = $type;
require_once $this->serverType.'Inc.php';
break;
default:
Error::add('Ошибка', 'Тип сервера указан неверно!');
}
}
Очередной высер чудо-программистов. Еще одна панель управления игровыми серверами