- 1
-
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+147
-
+170.2
// для увеличения быстродействия - если проверка успешна - выходим из цикла,
// не проверяя остальные условия.
do
{
if (is_numeric($variable))
{
// do smth
break;
}
if (is_null($variable))
{
// do smth
break;
}
// еще несколько ифоф
$variable = '\'ERROR_TYPE\'';
}
while(false);
прикольно конечно) но чел походу не знал про switch-case
+132
struct ass {
void (*func)(const char *, void *);
void *data;
} asses[] = {
{ NULL, NULL },
/* Тут типа scanf */
{ NULL, NULL },
};
while (getopt_long_only(argc, argv, "", long_options, &option_index) != -1) {
if (option_index < 0)
return 1;
struct ass *derp = &asses[option_index];
if (derp->func != NULL)
derp->func(optarg, derp->data);
}
Правим код начальника.
+1
https://sun1-28.userapi.com/c854224/v854224060/1a2490/7JEShAFqoEU.jpg
Сишник половину из этого увидит логичным.
А JS макаки без должного математического образования не знают даже, как правильно проверять на эквивалентность floating point numbers.
0
Чем полностью стереть файл\каталог с NTFS?
Имею ввиду удалить не только сам файл\каталог, но и перезатереть его запись в каталоге?
Хотя логично предположить, что если запись содержимого каталога сортируется, то она перезапишется.
Содержимое каталога хранится вне MFT, записи о каталогах хранятся в ней.
Также в NTFS есть журнал транзакций, значит надо тереть и оттуда?
Я так понял, в ext3\4 обычный шреддинг тоже не поможет.
+1
// https://habr.com/ru/post/490222/
Почему мы должны сломать ABI
Прежде всего, есть несколько полезных изменений в реализации стандартной библиотеки, которые можно внедрить, если нарушить текущий ABI:
...
* Ускорить работу std::regex (На данный момент быстрее запустить PHP и выполнить на нем поиск по регулярному выражению, чем использовать стандартный std::regex)
Какой багор! Именно поэтому я за PHP
−2
Немного о пропертях
"Лично мне свойства не нравятся и я был бы рад, если бы в Microsoft решили убрать
их поддержку из .NET Framework и сопутствующих языков программирования."
"Я считаю, что разработчики используют свойства намного чаще, чем следовало
бы. Достаточно внимательно изучить список различий между свойствами и поля-
ми, чтобы понять: есть очень немного ситуаций, в которых определение свойства
действительно полезно, удобно и не запутывает разработчика. Единственная при-
влекательная черта свойств — упрощенный синтаксис, все остальное — недостатки,
в числе которых потеря в производительности и читабельности кода. Если бы я
участвовал в разработке .NET Framework и компиляторов, я бы вообще отказался от
свойств, вместо этого я предоставил бы разработчикам полную свободу реализации
методов GetXxx и SetXxx. Позже создатели компиляторов могли бы предоставить
особый упрощенный синтаксис вызова этих методов, но только при условии его
отличия от синтаксиса обращения к полям, чтобы программист четко понимал, что
выполняется вызов метода!"
Джефри Рихтер
Срач объявляется открытым
+144
sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
Кэп с нами.
+1
package literatePrimes;
import java.util.ArrayList;
public class PrimeGenerator {
private static int[] primes;
private static ArrayList<Integer> multiplesOfPrimeFactors;
protected static int[] generate(int n) {
primes = new int[n];
multiplesOfPrimeFactors = new ArrayList<Integer>();
set2AsFirstPrime();
checkOddNumbersForSubsequentPrimes();
return primes;
}
private static void set2AsFirstPrime() {
primes[0] = 2;
multiplesOfPrimeFactors.add(2);
}
private static void checkOddNumbersForSubsequentPrimes() {
int primeIndex = 1;
for (int candidate = 3;
primeIndex < primes.length;
candidate += 2) {
if (isPrime(candidate))
primes[primeIndex++] = candidate;
}
}
private static boolean isPrime(int candidate) {
if (isLeastRelevantMultipleOfNextLargerPrimeFactor(candidate)) {
multiplesOfPrimeFactors.add(candidate);
return false;
}
return isNotMultipleOfAnyPreviousPrimeFactor(candidate);
}
private static boolean
isLeastRelevantMultipleOfNextLargerPrimeFactor(int candidate) {
int nextLargerPrimeFactor = primes[multiplesOfPrimeFactors.size()];
int leastRelevantMultiple = nextLargerPrimeFactor * nextLargerPrimeFactor;
return candidate == leastRelevantMultiple;
}
private static boolean
isNotMultipleOfAnyPreviousPrimeFactor(int candidate) {
for (int n = 1; n < multiplesOfPrimeFactors.size(); n++) {
if (isMultipleOfNthPrimeFactor(candidate, n))
return false;
}
return true;
}
private static boolean
isMultipleOfNthPrimeFactor(int candidate, int n) {
return
candidate == smallestOddNthMultipleNotLessThanCandidate(candidate, n);
}
private static int
smallestOddNthMultipleNotLessThanCandidate(int candidate, int n) {
int multiple = multiplesOfPrimeFactors.get(n);
while (multiple < candidate)
multiple += 2 * primes[n];
multiplesOfPrimeFactors.set(n, multiple);
return multiple;
}
}
https://habr.com/ru/post/508876/
Вероятно, хватит рекомендовать «Чистый код»
> Я остановлюсь на ещё одном вопиющем примере кода. Это генератор простых чисел из главы 8:
0
IT Оффтоп #238
#208: https://govnokod.ru/29060 https://govnokod.xyz/_29060
#209: https://govnokod.ru/29070 https://govnokod.xyz/_29070
#210: https://govnokod.ru/29079 https://govnokod.xyz/_29079
#211: https://govnokod.ru/29092 https://govnokod.xyz/_29092
#212: https://govnokod.ru/29093 https://govnokod.xyz/_29093
#213: https://govnokod.ru/29104 https://govnokod.xyz/_29104
#214: https://govnokod.ru/29114 https://govnokod.xyz/_29114
#215: https://govnokod.ru/29125 https://govnokod.xyz/_29125
#216: https://govnokod.ru/29132 https://govnokod.xyz/_29132
#217: https://govnokod.ru/29147 https://govnokod.xyz/_29147
#218: https://govnokod.ru/29156 https://govnokod.xyz/_29156
#219: https://govnokod.ru/29166 https://govnokod.xyz/_29166
#220: https://govnokod.ru/29181 https://govnokod.xyz/_29181
#221: https://govnokod.ru/29185 https://govnokod.xyz/_29185
#222: https://govnokod.ru/29190 https://govnokod.xyz/_29190
#223: https://govnokod.ru/29203 https://govnokod.xyz/_29203
#224: https://govnokod.ru/29211 https://govnokod.xyz/_29211
#225: https://govnokod.ru/29212 https://govnokod.xyz/_29212
#226: https://govnokod.ru/29218 https://govnokod.xyz/_29218
#227: https://govnokod.ru/29220 https://govnokod.xyz/_29220
#228: https://govnokod.ru/29230 https://govnokod.xyz/_29230
#229: https://govnokod.ru/29235 https://govnokod.xyz/_29235
#230: https://govnokod.ru/29241 https://govnokod.xyz/_29241
#231: https://govnokod.ru/29246 https://govnokod.xyz/_29246
#232: https://govnokod.ru/29249 https://govnokod.xyz/_29249
#233: https://govnokod.ru/29253 https://govnokod.xyz/_29253
#234: https://govnokod.ru/29259 https://govnokod.xyz/_29259
#235: https://govnokod.ru/29262 https://govnokod.xyz/_29262
#236: https://govnokod.ru/29267 https://govnokod.xyz/_29267
#237: https://govnokod.ru/29271 https://govnokod.xyz/_29271