- 1
Я 20 и мне бородат. :)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
Я 20 и мне бородат. :)
Да будет хохлосрач!11
−1
// Making Wrong Code Look Wrong
// by Joel Spolsky
// https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/
us = UsRequest("name")
usName = us
recordset("usName") = usName
sName = SFromUs(recordset("usName"))
WriteS sName
В упомянутой роскомговном статье «Making Wrong Code Look Wrong» Спольски упоминает венгерскую нотацию, как способ to make wrong code look wrong.
Я хотел бы обсудить ЯП, в котором поверх (допустим, динамической) системы типов есть некоторый набор правил, основанный на Apps Hungarian. У переменных и функций сравниваются префиксы, и язык не даёт тебе присвоить количество мух в переменную, которая хранит количество слонов, хотя и то и то — int. Если же ты знаешь, что делаешь, можно использовать функции вида <prefix>From<suffix> и <prefix>To<suffix>, причем во избежание бойлерплейта, можно положить все такие функции существующими и тривиальными (возвращающими входное значение), если не определено другое.
Что хорошего и плохого было бы в таком языке? Дискасс.
−2
instance Arbitrary ProjectConfig where
arbitrary =
ProjectConfig
<$> (map getPackageLocationString <$> arbitrary)
<*> (map getPackageLocationString <$> arbitrary)
<*> shortListOf 3 arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> (MapMappend . fmap getNonMEmpty . Map.fromList
<$> shortListOf 3 arbitrary)
-- package entries with no content are equivalent to
-- the entry not existing at all, so exclude empty
shrink ProjectConfig { projectPackages = x0
, projectPackagesOptional = x1
, projectPackagesRepo = x2
, projectPackagesNamed = x3
, projectConfigBuildOnly = x4
, projectConfigShared = x5
, projectConfigProvenance = x6
, projectConfigLocalPackages = x7
, projectConfigSpecificPackage = x8
, projectConfigAllPackages = x9 } =
[ ProjectConfig { projectPackages = x0'
, projectPackagesOptional = x1'
, projectPackagesRepo = x2'
, projectPackagesNamed = x3'
, projectConfigBuildOnly = x4'
, projectConfigShared = x5'
, projectConfigProvenance = x6'
, projectConfigLocalPackages = x7'
, projectConfigSpecificPackage = (MapMappend
(fmap getNonMEmpty x8'))
, projectConfigAllPackages = x9' }
| ((x0', x1', x2', x3'), (x4', x5', x6', x7', x8', x9'))
<- shrink ((x0, x1, x2, x3),
(x4, x5, x6, x7, fmap NonMEmpty (getMapMappend x8), x9))
]
В хачкеле мало бойлерплейта, говорили они. Это ещё далеко не самый длинный список, см. x43 ниже.
https://github.com/haskell/cabal/blob/4e0c701a2feb520d369ef506a18288c47f64b06a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs
−1
// https://github.com/omonar/nginx-http-auth-digest/blob/38fd7eb04b862636e61b812bbbb8fd2cae4d9ab4/ngx_http_auth_digest_module.c#L910
if (ngx_auth_digest_str2_casecmp(start, 'n', 'c'))
{
field = &ngx_http_auth_digest_fields.nc;
} else if (ngx_auth_digest_str3_casecmp(start, 'q', 'o', 'p'))
{
field = &ngx_http_auth_digest_fields.qop;
} else if (ngx_auth_digest_str3_casecmp(start, 'u', 'r', 'i'))
{
field = &ngx_http_auth_digest_fields.uri;
} else if (ngx_auth_digest_str5_casecmp(start, 'n', 'o', 'n', 'c', 'e'))
{
field = &ngx_http_auth_digest_fields.nonce;
} else if (ngx_auth_digest_str5_casecmp(start, 'r', 'e', 'a', 'l', 'm'))
{
field = &ngx_http_auth_digest_fields.realm;
} else if (ngx_auth_digest_str6_casecmp(start, 'c', 'n', 'o', 'n', 'c', 'e'))
{
field = &ngx_http_auth_digest_fields.cnonce;
} else if (ngx_auth_digest_str6_casecmp(start, 'o', 'p', 'a', 'q', 'u', 'e'))
{
field = &ngx_http_auth_digest_fields.opaque;
} else if (ngx_auth_digest_str8_casecmp(start, 'u', 's', 'e', 'r', 'n', 'a', 'm', 'e'))
{
field = &ngx_http_auth_digest_fields.username;
} else if (ngx_auth_digest_str8_casecmp(start, 'r', 'e', 's', 'p', 'o', 'n', 's', 'e'))
{
field = &ngx_http_auth_digest_fields.response;
} else if (ngx_auth_digest_str9_casecmp(start, 'a', 'l', 'g', 'o', 'r', 'i', 't', 'h', 'm'))
{
field = &ngx_http_auth_digest_fields.algorithm;
} else {
goto skip;
}
Чем им strcasecmp не угодил?
+3
public static Date round(Date d) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");
return sdf.parse(sdf.format(d));
} catch (ParseException ex) {
//This exception will never be thrown, because sdf parses what it formats
return d;
}
}
Простейший коробочный способ округления даты до дня.
+2
private fun showTicketWithSerialNumber(numberField: EditText, dateField: EditText) {
RxTextView.textChangeEvents(numberField).subscribe {
if (it.text().isNotEmpty()) {
RxTextView.textChangeEvents(dateField).subscribe {
if (it.text().isNotEmpty()){
vCardSearch.vis { true }
vButtonAddFlight.alpha = 1f
}
}
}
}
}
private fun showTicketWithoutSerialNumber(airlineField: EditText, departureField: EditText, arrivalField: EditText, dateField: EditText) {
RxTextView.textChangeEvents(airlineField).subscribe {
if (it.text().isNotEmpty()) {
RxTextView.textChangeEvents(departureField).subscribe {
if (it.text().isNotEmpty()){
RxTextView.textChangeEvents(arrivalField).subscribe {
if (it.text().isNotEmpty()) {
RxTextView.textChangeEvents(dateField).subscribe {
if (it.text().isNotEmpty()){
vCardSearch.vis { true }
vButtonAddFlight.alpha = 1f
}
}
}
}
}
}
}
}
}
Открыл. Увидел. Охуел. RxJava(в данном случае RxKotlin) в действии блеать......
0
catch
{
Assert.IsTrue(false);
}
Код в нутри теста
+1
private static int CalcCheckSum(byte[] BinFile)
{
int length = ((IEnumerable<byte>) BinFile).Count<byte>();
if (length > 0)
{
int num = 0;
for (int index = 0; index < length; ++index)
num = num + (int) BinFile[index] & (int) ushort.MaxValue;
}
return num;
}
Израильский инновационный вариант rolling hash'а :facepalm:
Здесь есть всё: и альтернативное определение длины массива, и обилие приведений к инту, и придающая особую таинственность битовая операция &
На первый взгляд может показаться, что результатом будет простая сумма всех байт, но не дайте себя обмануть! Результат - это суперсекретная(!!!11) сумма всех байт.
0
https://webhamster.ru/mytetrashare/index/mtb0/1480776952mrczr7xk44
Какие изменения предлагает инициативная группа стандарта C++!!, чтобы сделать язык C++ красивым, мощным и востребованным средством современной разработки?
0
int aBookItemKeysCount = 0;
foreach (var some in aBookItemKeys)
{
aBookItemKeysCount++;
}
aBookItemKeys это массив.