- 1
- 2
- 3
- 4
- 5
public interface ArchitectureUnit<T> {
public T release(Object... params);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+86
public interface ArchitectureUnit<T> {
public T release(Object... params);
}
максимальная гибкость
−101
self.exclude = list(set(list(self.exclude or []) + ['str1', 'str2']))
+160
$scope.close_menu = function(resize){
if(window.innerWidth<=1023) var width=280;
else var width=390;
var duration=(resize)? 0:300;
$('.menu').removeClass('active').animate({right:-width+'px'},duration);
$('.wrapper').animate({right:'0px'},duration);
$('body').css({'overflow':'auto'});
$('.menu_btn').animate({marginRight:'0px'},duration,function(){});
$('.videocontainer').animate({right:'0px'},duration);
$('.blog_share.active > a,.blog_share.active > ul').animate({right:'0px'},duration);
$('.backgorund_transparent').hide();
if(typeof isMoving != 'undefined') isMoving=false;
}
Просто AngularJs...
+135
static enum rc (*request_functions[])(void) = {
ko,
koko,
kokoko,
illegal_request
};
static inline enum rc illegal_request(void) { return ILLEGAL_REQUEST; }
reply.rc = request_functions[cmd.opcode < NKEYS(request_functions) ? cmd.opcode : ILLEGAL_REQUEST]();
Вызываем функцию по опкоду с абортом в случае index_out_of_bounds.
−82
@old_article_purchase.old_article.warehouse_placement = '102A1'
if @old_article_purchase.old_article.valid?
@old_article_purchase.old_article.save
end
−396
@implementation SlideMenuNavigationBar
- (void)layoutSubviews
{
[super layoutSubviews];
for (UIView *aView in self.subviews) {
// Correcting menu toggle button position
if ([[aView.class description] isEqualToString:@"UIButton"] && aView.frame.origin.x < self.frame.size.width/2) {
CGRect frame = aView.frame;
frame.origin.x = 12; // 8 for correlation
frame.origin.y = -1; // 1 for correlation
aView.frame = frame;
}
if (aView.frame.origin.x > self.frame.size.width/2 && !isIPad && ![[aView.class description] isEqualToString:@"ColoredView"]) {
CGRect frame = aView.frame;
frame.origin.x = 260; // 8 for correlation
frame.origin.y = -1; // 1 for correlation
aView.frame = frame;
}
// Correcting back button and right button positions
if ([[aView.class description] isEqualToString:@"_UINavigationBarBackIndicatorView"]) {
CGRect frame = aView.frame;
frame.origin.y = [self.class navigationBarHeight] - kDefaultNavigationBarHeight + 5; // 5 for correlation
aView.frame = frame;
}
if ([[aView.class description] isEqualToString:@"UINavigationButton"]) {
CGRect frame = aView.frame;
frame.origin.y = [self.class navigationBarHeight] - kDefaultNavigationBarHeight + 2; // 2 for correlation
aView.frame = frame;
}
if ([aView isKindOfClass:[NavigationBarButton class]]) {
CGRect frame = aView.frame;
frame.origin.x = 278; // 8 for correlation
frame.origin.y = 6; // 1 for correlation
aView.frame = frame;
}
}
}
@end
фиг знает что думали :D
+50
#include <iostream>
using namespace std;
void f(int i)
{
cout << "----" << endl;
void *array[] = { &&foo, &&bar, &&baz };
goto *array[i];
foo:
cout << "Foo" << endl;
bar:
cout << "Bar" << endl;
baz:
cout << "Baz" << endl;
}
int main() {
// your code goes here
f(0);
f(1);
f(2);
return 0;
}
http://ideone.com/63tRls
gcc extension
+156
// Real itemid is "contained" in public itemid in a bit tricky way. The formula is:
public_itemid = itemid * 256 + anum
// Quite easy, isn't it? Except where to get that anum. anum is some number assigned when you create a new post in LJ.
// But in fact, you don't need it. Because it is always less than 256, we can avoid searching for it, and just use simple Math to find itemid.
$anum = $public_itemid - floor($public_itemid / 256) * 256;
$itemid = ($public_itemid - $anum) / 256;
Прекрасный подход, то место, где вордпресс и ЖЖ сошлись воедино.
http://drumrock.skipitnow.org/livejournal-tools/itemid/
+159
$image_type = substr($image_data,strpos($image_data, '/')+1,strpos($image_data, ';')-(strpos($image_data, '/')+1));
Выдирание типа из заголовка base64-закодированного изображения (data:image/jpeg;base64,......................)
+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). Занавес.
Говнокодище.