- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
function getPointFactory() {
class P {
x = 0;
y = 0;
}
return new P();
}
function main() {
const PointZero = getPointFactory();
print("done.");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
function getPointFactory() {
class P {
x = 0;
y = 0;
}
return new P();
}
function main() {
const PointZero = getPointFactory();
print("done.");
}
все шах и мат вам... с/c++
Однажды я спросил восемь оопидоров "что такое класс?" и получил восемь разных ответов
В мое время было популярно определение "это данные, и методы для работы над ними"
Т.е. если я напишу на Си структуру и функции для работы с ней, это будет класс?
Конечно. Няписать на Си — это класс!
---
Вот одно из формальных определений класса: «Класс — это элемент ПО, описывающий абстрактный тип данных и его частичную или полную реализацию»
---
Класс В C# описывает объект.
---
A Class is like an object constructor, or a "blueprint" for creating objects.
--
выбирай
> нельзя инстанциировать
А с чего ты взял, что этот говнокостыль из джавы, применяемый для эмуляции обычных функций, которые туда забыли завезти -- класс?
По-моему эта хрень вообще не имеет отношения к ООП.
Я даже в С++ могу так сделать, и в ObjC, просто там такой хуйни не творят.
Во-вторых во всех случаях я использую ключевое слово "class". Разве это не класс? Как тогда отличить класс настоящий от не настоящего?
> По-моему эта хрень вообще не имеет отношения к ООП.
Обязателен ли класс для ООП? Что с прототипориентированным оп?
Неведомая ёбаная хуйня, настолько притянутая за уши, что вообще никак не взаимодействует с инстансами класса...
Такое ощущение, что ООП-сектанты не умеют применять свой же Single Responsibility Principle и смешали "класс", "пространство имён" и "глобалки" в кучу. Логично, что после такого уже сложно дать определение класса.
З.Ы. А на самом деле, им просто стыдно было писать глобалки. Вот они и переименовали их в "статические поля". Хотя это именно глобалки со всеми их проблемами.
То есть в питоне ООП нет?
> контекст, в котором вызывается тот или иной метод.
То есть в JS до ES6 ООП нет?
> потому что у них нет этого самого контекста.
У класс метода в питоне есть.
Алсо,
ооп?
Питон не ООП-язык. Начиная с банального len().
> То есть в JS до ES6 ООП нет?
То есть в ES6 завезли классы, а я тебе совсем про другое. this там с незапамятных времен.
> Алсо, ооп?
Конечно нет. Контекст это не такая штука, которая передается. Она может создаваться и видоизменяться под вызов, но не передаваться.
Qed.
Нет конечно. Это пространство имён для самых обычных функций и глобалок. Какой же это класс, если у него нету ни инстансов ни полей ни методов?
У него есть статические поля и статические методы, не?
Полиморфизм умеют, наследование умеют... Ну, три кита ООП, о которых все так любят говорить.
Напиши-ка мне тесты для статиков. То-то и оно. Обычные глобалки и функции, как во времена фортрана.
У нас в котле все классы по умолчанию final, так что какой же тут полимофризм и наследование?
А в С++ если метод не виртуальный, то ведь тоже никакого оплимморфизма?
Выходит, и там class не class?
Я могу добавить virtual и юзать полиморфизм для обычного метода если он мне нужен. Я могу убрать final если мне понадобится наследование.
Но не могу юзать полиморфизм для статика даже если он мне нужен. Это не метод. Это просто функция.
У статических методов в джаве нету никакого полиморфизма, никакими кейвордами их для этого не обмазать и тот же mock для них не сделать без ёбли.
Это просто функция. Старая добрая функция из фортрана.
/thread
cglib разве что
Я тебе про общий случай, а ты мне про какие-то конкретные примеры хуёвого дизайна...
Хрен знает, если честно. Наверное нет, если мы не будем ограничиваться статической типизацией, а позволим объектам как-то меняться на ходу, адаптироваться под задачу.
объект - не pod
у меня в гомоиконности нет никаких "объектов" которые не "данные"
Кстати, что такое pod?
вот если бы a был бы функтором, тогда бы класс был.
В одной лежит void*, и используется для передачи всех видов указателей на функции. Почему структура, а не просто void*? Чтобы отличать от void* используемого в других целях на уровне типов.
Во второй лежит указатель на функцию определённой сигнатуры. Используется, чтобы передать его куда-то. Отдельная структура, чтобы отличать его от указателей на функцию такой же сигнатуры, используемой в других целях на уровне типов.
В третьей лежит указатель на функцию определённой сигнатуры. Используется, чтобы поменять поведение функций, работающих с данным типом.
Что из этого классы? Структуры? Напиши скрипт, который мне их будет помечать, чтобы я не запутался.
char* это указатель на какой-то чар, без всякой семантики
int z* = &i;
тут i это массив?
Это класс?
Функционально ничем не отличается от класса в крестах.
Это хранит информацию о том как работать над собой?
А это?
А если мы соптимизируем?
Все обычно придумывают свои трактовки терминов ООП чтобы отнести угодные к ООП, а неугодные к не-ООП или наоборот. Типа как ты или я.
Споры по поводу терминов ООП, по-моему, уступают только спорам о каноничных™ реализациях паттернов.
Еще прикольно поспорить насколько какой подхот "пайтоник" или "руби вэй"
> 666_N33D135
ООП — это когда пишеш
Вместо устаревшего подхода
следует использовать современный
Невооруженным глазом видно, что второй подход гибче
а вот это объект?
Он возвращается разными хелперами для инициализации «классов», и содержит указатель, который запихивается в класс. Нужен, чтобы не запутаться в сотне разных void*.
Хочу заметить, что он абсолютно ничем не отличается от foo и может использоваться вместо него. Это всё ещё класс?
А если я заменю void* на int, это всё ещё останется классом?
https://govnokod.ru/27996#comment761886
> ООП это вообще хер знает что
j123123
С классами то же самое.
> Хочу лошадку.
666_N33D135
> Пошёл нахуй с моей ветки, гандон!
Web_Monkey
> Ко-ко-ко!
Rooster
1. в различных системах классификации обширная категория объектов объединенных общностью главных признаков
2. социол. большая группа людей, объединённых общностью положения условий жизни, доходов и т. п.
3. в учебн. заведениях совокупность учеников школы одного и того же года обучения
4. в учебн. заведениях совокупность учащихся всех лет обучения конкретного преподавателя в музыкальных образовательных учреждениях
5. перен. помещение для учебных занятий класса в значении 3
6. разряд, уровень квалификации
7. комп., прогр. в объектно-ориентированном программировании определяемый пользователем тип данных, объединяющий прототипические структуры данных и методы работы с ними
8. предик., сленг очень хорошо
Ну как получил ответ?
http://coliru.stacked-crooked.com/a/019ef1ddf0aae2cb
Чувак, ключевые слова "new" и "delete" не нужны в 99.99999% случаев. Использование их почти всегда говорит о низком качестве кода
Использование демонической мапяти почти всегда говорит о низком качестве кода
пример
char* add(char* s, char* p)
{
auto r = s + p;
return r;
}
А зачем "**"?
Вообще сишкостроки гениальное творение, с ними не соскучишься.
И не отказаться от них, на них везде всё заваязано)
как тян?
У меня на этапе конпеляции известно, сколько программа потребует мапяти.
Починил
Создание идёт в make_unique, которое сразу создаёт объект в куче.
Вообще куча, в принципе, и не нужна, можно заставить getPointFactory возвращать объект по значению.
http://coliru.stacked-crooked.com/a/c346d56a168707bf
так что не выйдет.
https://wiki.dlang.org/Voldemort_types
https://gist.github.com/mosra/7363ac0f226f6370c78d
Типизированные бляди сонулли!
Нейминг-бляди соснули.
Лесник сидел напротив, болтал о том, о сём.
Что нет среди животных у старика врагов,
Что нравится ему подкармливать волков.
Сишка всё так же непринуждённо сливает в хламище всю скриптуху.
С большим удовольствием прочёл дискач об опеределениях термина «класс».
Нахуя я ещё не придумал, но можно.
Но какую проблему решает этот код? Я могу то же самое написать на няшной без этих всех анонимных классов, сохранений классов в переменную и прочего синтаксического мусора.
getClass семантически это типичная фабрика фабрик.
Слился, питушок.
Ничего не понимаю...
А вам слабо!?
А давайте мерятся, у кого UB больше!