- 1
- 2
- 3
- 4
- 5
- 6
public static class IntExtension
{
public static int NotMoreThan(this int i, int thanWhat){
return i < thanWhat ? thanWhat : i;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+942
public static class IntExtension
{
public static int NotMoreThan(this int i, int thanWhat){
return i < thanWhat ? thanWhat : i;
}
}
непонятно что
Fike 06.05.2015 08:34 # +5
kegdan 06.05.2015 09:25 # +2
No More!
taburetka 06.05.2015 09:57 # 0
bormand 06.05.2015 10:02 # +1
Then what?
P.S. Ненавижу then и than. Вечно их путаю.
roman-kashitsyn 06.05.2015 10:41 # +1
Мне if cond then expr1 else expr2 настолько въелось в мозг, что спутать их стало сложно.
guest 26.06.2015 00:01 # +3
TarasB 06.05.2015 11:59 # 0
pushistayapodmyshka 06.05.2015 12:15 # 0
kegdan 06.05.2015 12:20 # +2
Типа добавляет методы в уже существующий класс
TarasB 06.05.2015 12:32 # 0
Или это можно и снаружи метод к классу приделать? Тогда неплохая штука, да.
roman-kashitsyn 06.05.2015 12:41 # +2
Lokich 06.05.2015 12:45 # 0
TarasB 06.05.2015 13:14 # 0
kegdan 06.05.2015 13:43 # +3
Qwertiy 07.05.2015 10:52 # 0
kegdan 07.05.2015 12:25 # 0
1024-- 07.05.2015 14:58 # 0
Lokich 06.05.2015 13:49 # +1
можно подумать, то, что функция без класса не может быть это проблема.
1024-- 06.05.2015 20:09 # 0
Но это действительно проблема. Класс - это тип данных, для которого определены не только его компоненты, но и функции для работы с ними.
Здесь же имеется какой-то странный тип данных без данных(!), к которому прикрепили функцию для работы с совершенно другим(!) типом данных.
Питушня, непорядок, беспредел, хватит это терпеть! Мы просто привыкли к этой жабологике, считаем её обыденностью и забыли уже наших старых товарищей - кресты и питонцы.
Lokich 06.05.2015 20:43 # 0
определения для partial классов может быть разрозненным по проекту, а method extensions в другом классе типа не могут?
1024-- 06.05.2015 21:13 # 0
Интересная штука. Надо было int сделать partial классом, чтобы можно было добавлять методы в int, а не на деревню к дедушке.
Но всё же ценности отдельных функций, свободных от давления кровожадных классов, это не снижает.
kegdan 06.05.2015 22:26 # +1
И вообще раз пошло такое дело - в большинстве языков ООП не тру. Насколько я помню Тру оно только в смолтоке и нескольких элитарных языках
1024-- 06.05.2015 22:38 # +1
ЗА СВОБОДУ ФУНКЦИЙ!
kegdan 06.05.2015 22:43 # 0
А свобода функций - это фп
А в J - свобода глаголов!
1024-- 06.05.2015 22:51 # 0
Вот и заворачивали бы func всё в какую-нибудь static $MyClass_cs$TempClass15::func, если внутри всё требуется в классах на блюдечке подавать. А пользователь (программист) чтоб этого не видел, пока ему не придётся лезть в скомпилированную питушню.
kegdan 06.05.2015 23:02 # 0
Lokich 07.05.2015 13:30 # 0
kegdan 07.05.2015 15:18 # 0
Vasiliy 07.05.2015 15:32 # 0
kegdan 07.05.2015 16:01 # 0
http://ideone.com/nmbYrf
Vasiliy 07.05.2015 16:23 # 0
1024-- 07.05.2015 16:32 # 0
Вот только что меня бесит - так это связь this внешного класса с внутренним классом в Java, если не писать лишний раз где-то слово "static". Не знаю, как в C#, а вот поведение в C++ мне больше нравится.
bormand 07.05.2015 16:34 # +1
Передавай this в конструктор ребёнка руками, передавай руками, сука!
Нормально там всё, разве что немного неинтуитивно, что эта связь по-умолчанию включена. Мне вот жабьего поведения в крестах не хватало ;( Впрочем, его там в общем виде и не запилить из-за отсутствия gc.
1024-- 07.05.2015 16:37 # 0
Вот! Действительно.
bormand 07.05.2015 16:38 # +1
А по-умолчанию оно там, походу, из-за того, что static класс внутри другого не особо то и нужен - его можно унести на один уровень с родителем и поставить уровень доступа package private.
1024-- 07.05.2015 16:40 # 0
Но это помогает эффективнее использовать тот самый ФОЛДИНГ, про который некогда говорил Пи.
kegdan 07.05.2015 17:25 # 0
Vasiliy 07.05.2015 17:41 # 0
kegdan 07.05.2015 17:53 # +2
А публичные классы как правило предполагают анальную зависимость от внешнего класса, и само его создание требуется только для получения типа для подстановки во всякие обработчики извне. Ну например
http://ideone.com/NssctQ
Stertor 07.05.2015 17:55 # +3
Слушай, тебя словно подменили! Мне нравится, как ты общаешься и троллишь. Респект!
kegdan 07.05.2015 17:59 # 0
3_14dar 07.05.2015 20:05 # 0
403
kegdan 07.05.2015 20:19 # 0
3_14dar 07.05.2015 21:51 # 0
У вас не все сайты вне рахи уже забанены?
Stertor 07.05.2015 21:54 # 0
kegdan 07.05.2015 22:23 # 0
Давайте каждый сам у себя будет троллить
Lokich 07.05.2015 18:35 # 0
скажи честно, ты упоролся? зачем там делегат?
kegdan 07.05.2015 18:37 # 0
Lokich 07.05.2015 18:54 # 0
kegdan 07.05.2015 18:58 # 0
Vasiliy 07.05.2015 19:45 # 0
Lokich 08.05.2015 12:51 # 0
наверное потому, что внутренний класс может выполнять всю черную работу, и быть необходимым только для класса, где он определен.
в данном примере, есть класс с заказами. ты их туда пушишь, указываешь продукт, стоимость и количество. данный класс хранит их в коллекции специальных контейнеров. при вызове метода OrderTotal возвращает сумму заказов.
не самый лучший пример конечно же, но представим например, есть один класс, который скажем производит загрузку файлов.
ты передаешь ему файл, протокол и URL, а он внутри в виде приватных классов имеет реализацию нужных тебе протоколов, и вызывает их. и получается, что не будет у одного класса методов
UploadFileHttp
UploadFileFtp
UploadFileFtps
UploadFileSftp
UploadFile....
давай только не будем начинать "можно же отдельно реализовать все эти аплоудеры".
bormand 08.05.2015 13:44 # 0
Lokich 08.05.2015 13:55 # 0
internal имеет видимость внутри сборки, поэтому внутри моей сборки он будет как public, но если этот класс выполняет работу только внутри какого-то класса, я не вижу причин делать его internal, private будет в самый раз.
kegdan 08.05.2015 14:48 # 0
Vasiliy 07.05.2015 19:47 # 0
roman-kashitsyn 07.05.2015 19:50 # 0
Он прячет часть реализации. Вложенные классы удобны, например, при реализации итераторов. Точный тип итератора не торчит наружу, доступен только через интерфейс.
kegdan 07.05.2015 19:54 # 0
По сути - это такой встроенный в язык фасад.
>> Я не особо понимаю необходимость
нет необходимости. Как и в ООП нет необходимости. Просто фича
Qwertiy 07.05.2015 22:26 # 0
http://ideone.com/k4Sprh
kegdan 07.05.2015 22:50 # 0
http://ideone.com/OGPlYZ
Qwertiy 07.05.2015 23:26 # 0
3_14dar 07.05.2015 17:55 # −2
kegdan 06.05.2015 12:26 # 0
http://ideone.com/OlPG8p
guest 08.05.2015 17:29 # 0
JohnyL 24.06.2015 15:32 # 0
kegdan 24.06.2015 19:23 # 0
Читать пробовал перед тем как писать?
JohnyL 24.06.2015 19:27 # 0
kegdan 24.06.2015 19:59 # 0
kazragore 26.07.2015 20:43 # 0
kegdan 27.07.2015 09:40 # +2