- 1
this.value = this.value.replace(/./g, '');
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+169
this.value = this.value.replace(/./g, '');
//гениальное обнуление строки
+157
function report1(req, res, next, type) {
if (!req.query || !req.query.name) {
var ct = "Income statement";
if (type == 'pieflow')
ct = 'Pie flow chart';
else if (type == 'barflow')
ct = 'Bar flow chart';
res.redirect(req.url + "?name=" + ctx.i18n(req.session.apiToken, 'cash', ct));
return;
}
var pid = "reports-" + type + "-" + req.query.name;
var vtabs,data,reportSettings;
async.waterfall([
function (cb1) {
async.series([
function(cb2) {
webapp.guessTab(req, {pid: pid, name:req.query.name, url:req.url}, cb2);
},
function(cb2) {
webapp.getTabSettings(req.session.apiToken, pid, cb2);
}
],
function (err, results) {
cb1(null, results[0], results[1]);
});
},
function (vtabs_, reportSettings_, cb1) {
vtabs = vtabs_;
reportSettings = reportSettings_;
if (_.isEmpty(reportSettings) || !reportSettings.version || (reportSettings.version != reportSettingsVersion)){
reportSettings = getDefaultSettings(req.query.name);
webapp.saveTabSettings(req.session.apiToken, pid, reportSettings, function(err){
if (err) console.log(err);
});
}
calculateGraphData(req.session.apiToken,type,reportSettings,cb1);
},
function(data_,cb1){
data = data_;
cb1()
},
function(){
data.tabs = vtabs;
data.pmenu = {name:req.query.name,
items:[{name:webapp.ctx.i18n(req.session.apiToken, 'cash','Page settings'),id:"settings",href:"#"}]}
data.reportSettings = reportSettings;
res.render(__dirname+"/../res/views/report", data);
}],
next
);
};
Прислали мне, значит, вступительное задание на должность разработчика node.js, а там гигантский проект, в который нужно дописать модуль, который выглядит весь так же ужасно, как эта функция. Долго порывался написать, что это самый ужасный код, который я когда-либо видел. http://pastebin.com/4NYccg3Y вот ссылка на весь файл, кому интересно, весь проект палить не буду, но скажу, что он большой и ужасный.
−117
class DictOfLists(defaultdict): # it's possible to use dict instead
def __init__(self, *args, **kwds):
__args=self.__check_args(*args)
self.__check_kwds(**kwds)
defaultdict.__init__(self,(lambda:[]), *__args, **kwds)
# dict.__init__(self, *__args, **kwds)
def __is_valid_item(self,item):
if len(item)==2 and not hasattr(item[0],"__iter__") and hasattr(item[1],"__iter__"):
return True
return False
def __check_args(self,*args):
if len(args)>1:
if type(args) == tuple and self.__is_valid_item(args):
return [args,] # tuple of key and list of values
else:
raise TypeError("Item of %s must be a tuple of (key,IterableValue) but %s=%s is not"%\
(self.__class__.__name__,
args.__class__.__name__,
repr(args)))
if len(args) != 1: return args
if isinstance(args[0], DictOfLists): return args
if hasattr(args[0],"__iter__"):
if len(args[0]) == 0: return args # empty iterator
items = args[0].items() if type(args[0]) == dict else args[0]
if self.__is_valid_item(items):
return [args,] # tuple of key and list of values
for v in items:
if not (type(v) == tuple and len(v)==2):
raise TypeError("Item of %s must be a tuple of (key, IterableValue) but %s=%s is not"%\
(self.__class__.__name__,
v.__class__.__name__,
v))
if not hasattr(v[1],"__iter__"):
raise TypeError("Value of %s must be iterable but %s(%s) is not"%\
(self.__class__.__name__,
v[1].__class__.__name__,
repr(v[1])))
else: raise TypeError(" %s must be initialized by {},[],() or %s but %s is not"%\
(self.__class__.__name__,
self.__class__.__name__,
args[0].__class__.__name__))
return args
def __check_kwds(self, **kwds):
for v in kwds.itervalues():
if not hasattr(v,"__iter__"):
raise TypeError("Value of %s must be iterable but %s(%s) is not"%\
(self.__class__.__name__,
v.__class__.__name__,
repr(v)))
def walk(self):
for k, v in self.iteritems():
for x in v:
yield k, v, x
raise StopIteration
def __setitem__(self, *args, **kwargs):
self.__check_args(*args)
self.__check_kwds(**kwargs)
return dict.__setitem__(self, *args, **kwargs)
def update(self, *args, **kwds):
_args=self.__check_args(*args)
self.__check_kwds(**kwds)
dict.update(self,*_args, **kwds)
correct = [ {}, [], (), # empty iterable
{'k2':[], 'k22':[]}, # multipe items dict
[('k3',[]),('k32',[])], # array tuples key list val
(('k4',[]),('k42',[])), # tuple of tuples key list val
('k5',[]) # tuple of key list val
]
strange = [('e0','12'), ('e1','123')]
import inspect
def init_tester(dict_class,t_array,cs):
print "\n%s %s %s"%( inspect.currentframe().f_code.co_name, dict_class().__class__.__name__, cs )
for i in t_array:
try:
print repr(i).ljust(26), repr(dict_class(i)).ljust(74),
print ' work '.ljust(8)
except Exception,e:
print "dosn't work ",
print e
continue
print "------------------------------"
if __name__ == '__main__':
init_tester( DictOfLists, correct, "correct")
init_tester( dict, correct, "correct")
init_tester( DictOfLists, strange, "strange")
init_tester( dict, strange, "strange")
Вот такой вот словарь, значениями элементов которого могут быть только списки. В принципе легко его доделать, чтобы знаечениями были все iterable, но не строки. Кроме этого, он внимательнее проверяет агрументы. Например если ему послать ('k5',[]), он воспримет это как: k5 - key, [] - value. Build-in dict например воспринимает ('12','34') как 1 - key, 2 - value, 3 - key, 4 - value. Соответственно если ему послать ('12','345'), он ругнется. Мне показалось, что это немного странное поведение, трактовать 2-х символьные строки, как key-value. Покритикуйте please. В том числе "стиль" и "красоту".
+163
$('.vse-zaeblo').click(function() {
$.fancybox($(this));
return false;
});
Получил задачу пофиксить сайт созданный другой компанией, заглянул в код и увидел самую первую функцию
+159
jQuery(document).ready(function(){
jQuery("a.m1_show").click(function(){
jQuery('div#emul_1').addClass('mshow').show();
jQuery('div#emul_2').addClass('minvis').hide();
jQuery('div#emul_3').addClass('minvis').hide();
jQuery('div#emul_4').addClass('minvis').hide();
jQuery('div#emul_5').addClass('minvis').hide();
//jQuery('li#emul_6').addClass('minvis').hide();
});
});
jQuery(document).ready(function(){
jQuery("a.m2_show").click(function(){
jQuery('div#emul_2').addClass('mshow').show();
jQuery('div#emul_1').addClass('minvis').hide();
jQuery('div#emul_3').addClass('minvis').hide();
jQuery('div#emul_4').addClass('minvis').hide();
jQuery('div#emul_5').addClass('minvis').hide();
//jQuery('li#emul_6').addClass('minvis').hide();
});
});
jQuery(document).ready(function(){
jQuery("a.m3_show").click(function(){
jQuery('div#emul_3').addClass('mshow').show();
jQuery('div#emul_1').addClass('minvis').hide();
jQuery('div#emul_2').addClass('minvis').hide();
jQuery('div#emul_4').addClass('minvis').hide();
jQuery('div#emul_5').addClass('minvis').hide();
//jQuery('li#emul_6').addClass('minvis').hide();
});
});
jQuery(document).ready(function(){
jQuery("a.m4_show").click(function(){
jQuery('div#emul_4').addClass('mshow').show();
jQuery('div#emul_1').addClass('minvis').hide();
jQuery('div#emul_3').addClass('minvis').hide();
jQuery('div#emul_2').addClass('minvis').hide();
jQuery('div#emul_5').addClass('minvis').hide();
//jQuery('li#emul_6').addClass('minvis').hide();
});
});
jQuery(document).ready(function(){
jQuery("a.m5_show").click(function(){
jQuery('div#emul_5').addClass('mshow').show();
jQuery('div#emul_1').addClass('minvis').hide();
jQuery('div#emul_3').addClass('minvis').hide();
jQuery('div#emul_2').addClass('minvis').hide();
jQuery('div#emul_4').addClass('minvis').hide();
//jQuery('li#emul_6').addClass('minvis').hide();
});
});
function but_1 () {
jQuery('span#emul_img_1').addClass('img_none').hide();
jQuery('span#emul_img_2').addClass('img_inline').show();
jQuery('span#emul_img_3').addClass('img_inline').show();
jQuery('span#emul_img_4').addClass('img_inline').show();
jQuery('span#emul_img_5').addClass('img_inline').show();
jQuery('span#emul_img_none_1').addClass('img_inline').show();
jQuery('span#emul_img_none_1').addClass('current_tab').show();
jQuery('span#emul_img_none_2').addClass('img_none').hide();
jQuery('span#emul_img_none_3').addClass('img_none').hide();
jQuery('span#emul_img_none_4').addClass('img_none').hide();
jQuery('span#emul_img_none_5').addClass('img_none').hide();
}
function but_2 () {
jQuery('span#emul_img_2').addClass('img_none').hide();
jQuery('span#emul_img_1').addClass('img_inline').show();
jQuery('span#emul_img_3').addClass('img_inline').show();
jQuery('span#emul_img_4').addClass('img_inline').show();
jQuery('span#emul_img_5').addClass('img_inline').show();
jQuery('span#emul_img_none_2').addClass('img_inline').show();
jQuery('span#emul_img_none_2').addClass('current_tab').show();
jQuery('span#emul_img_none_1').addClass('img_none').hide();
jQuery('span#emul_img_none_3').addClass('img_none').hide();
jQuery('span#emul_img_none_4').addClass('img_none').hide();
jQuery('span#emul_img_none_5').addClass('img_none').hide();
}
...
На работе сказали поправить табы, зашел увидел это =)
Вот такая реализация, Там еще html очень "забавный" =)
+76
/**
* all object cocomponents must be not the same objects in dump - to eliminate strange situations:
*
* @param copySet
*/
private void createAllNewComplexObjects(HashMap copySet) {
if (copySet != null) {
for (Iterator i = copySet.keySet().iterator(); i.hasNext();) {
Object key = i.next();
Object o = copySet.get(key);
Object newObject = madeNewObect(o);
copySet.put(key, newObject);
}
}
}
/**
* create new instance of the object - if it is of known type. Hashes will bethe same
*
* @param oldObject
* @return
*/
private Object madeNewObect(Object oldObject) {
if (oldObject instanceof String) {
return new String((String) oldObject);
}
if (oldObject instanceof Point) {
return new Point((Point) oldObject);
}
if (oldObject instanceof Vector2D) {
return new Vector2D((Vector2D) oldObject);
}
if (oldObject instanceof RGBA) {
RGBA c = (RGBA) oldObject;
return new RGBA(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha());
}
if (oldObject instanceof Integer) {
return new Integer(((Integer) oldObject).intValue());
}
if (oldObject instanceof Double) {
return new Double(((Double) oldObject).doubleValue());
}
if (oldObject instanceof Boolean) {
return new Boolean(((Boolean) oldObject).booleanValue());
}
if (oldObject instanceof Float) {
return new Float(((Float) oldObject).floatValue());
}
if (oldObject instanceof HashMap) {
createAllNewComplexObjects((HashMap) oldObject);
return oldObject;
}
return oldObject;
}
В продолжение темы конструктора String(String).
+84
List selection = new ArrayList((s != null) ? s : new ArrayList());
Больше мусора для бога сборщика мусора!
+86
const n=10;
type
xfl = record x: double; fl: longint; end;
ar_xfl = array[1..2*n] of xfl;
var
i: longint;
x,y,r: double;
a: ar_xfl;
f: text;
procedure qsort(var a: ar_xfl; lo,hi: longint);
procedure sort(l,r: longint);
var
i,j,k: longint;
tmp: xfl;
begin
i:=l;
j:=r;
k:=(l+r) div 2;
repeat
while a[i].x<a[k].x do inc(i);
while a[k].x<a[j].x do dec(j);
if i<=j then
begin
tmp:=a[i];
a[i]:=a[j];
a[j]:=tmp;
inc(i);
dec(j);
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r);
end;
begin
sort(lo,hi);
end;
За такие названия переменных надо руки завязывать узлом. Да и помимо этого..
+53
//
// 'compare_keywords()' - Compare two keywords...
//
extern "C" {
int
compare_keywords(const void *a,
const void *b) {
return (strcmp(*((const char **)a), *((const char **)b)));
}
}
+158
// Пара функций в глобальном скоупе прям
function imageOn(imageName)
{
if(document.images)
{
document[imageName].src=eval(imageName+"On.src");
}
}
function imageOff(imageName)
{
if(document.images)
{
document[imageName].src=eval(imageName+"Off.src");
}
}
// Затем по такому файлику на каждую страницу
if(document.images)
{
imagePath= contextImages;
displaySessionInfoOn=new Image();
displaySessionInfoOn.src=imagePath+"ShowSessionStatusOn.gif";
displaySessionInfoOff=new Image();
displaySessionInfoOff.src=imagePath+"ShowSessionStatusOff.gif";
...
}
// И, наконец, пример использования в HTML:
<a href="DisplaySessionInfo?PropertyId=FILBB" onmouseover="imageOff('displaySessionInfo')" onmouseout="imageOn('displaySessionInfo')">
<img src="/resources/images/ShowSessionStatusOn.gif" name="displaySessionInfo" alt="ShowSessionStatus" border="3"/>
</a>