|
22 / 10 / 2
Регистрация: 25.06.2018
Сообщений: 155
|
|
В каких случаях стоит писать метод в новом классе?14.08.2018, 13:11. Показов 1962. Ответов 35
Метки нет (Все метки)
Сейчас дошел до классов и не до конца понимаю когда следует метод писать в мэйне а когда в новом классе?
0
|
|
| 14.08.2018, 13:11 | |
|
Ответы с готовыми решениями:
35
В каких случаях стоит применять метод File.AppendText()? Так в каких случаях стоит использовать наследование? В каких случаях стоит инкапсулировать данные в объект? |
| 15.08.2018, 11:10 | |
|
0
|
|
|
2744 / 2053 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
|
||
| 15.08.2018, 12:01 | ||
|
Не по теме: благородное желание! Добавлено через 43 минуты cinemaster4d, в кладовке нашлось)) https://habrahabr.ru/post/345658/ - что такое ООП
0
|
||
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
|
||
| 15.08.2018, 12:10 | ||
|
Про "что такое ООП" рассказано в SICP в главе про моделирование электрических цепей.
0
|
||
|
2744 / 2053 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
|
|
| 15.08.2018, 12:17 | |
|
korvin_, Благодарю, за уточнение))
0
|
|
|
0 / 0 / 0
Регистрация: 15.08.2018
Сообщений: 7
|
|
| 15.08.2018, 16:15 | |
|
У меня на это будет непопулярное мнение.
Учтите, что я программирую с 2010 года профессионально. Писал на Java, Scala, Kotlin. В императивном и функциональном стилях. Практиковал разные подходы построения архитектуры. DDD и всякое такое. ООП это лажа. Да, оно полезно в некоторых случаях. Но часто мешает больше, чем помогает. Начнём с того, что взглянем на Три Сакральных Слова из мира ООП - наследование, инкапсуляция и полиморфизм. Наследование настолько вредно, что его вообще не рекомендуют использовать. Почитайте к примеру книгу Effective Java. Цитирую: "Prefer composition over inheritance". То, что даёт наследование можно во многих случаях сделать через композицию. И остаются только очень редки случаи, когда наследование подходит и не будет сильно вредить, но нужно быть очень опытным чтобы разглядеть их и не наступить на грабли. Инкапсуляция и полиморфизм. Их можно достичь и без ООП. К примеру с помощью обычных функций. А заявления, что моделирование реального мира в коде это хорошо и как-то чудесным образом поможет нам решить все наши проблемы ложно. Java за всё своё существование(с 95-го это уже 23 года) показала, что использование ООП не сделало софт супер-пупер крутым, легким в понимании или быстрым. Когда мы пишем софт, нам нужно чтобы он сделал последовательность действий и выдал результат(отрисовал веб-страницу или совершил игровое действие, неважно). И сама природа бизнес-требований к софту она не обьектно-ориентированна. Она последовательна. Поэтому код должен выполнять то, что нужно бизнесу. И здесь даже проблема не в обьектах как таковых. Я против обьектов не имею ничего против. Дело именно в объектной ориентированности. Не нужно ориентировать код на обьекты. Они могут появляться в процессе разработки сами собой и это хорошо. Но когда мы изначально в архитектуре ориентируемся на объекты, как будто это дефолтный способ разработки, тогда ждите беды. Устраивайтесь поудобней и приготовьтесь рефакторить код по 100 раз, засыпать себя сотней абстракций, которые ничего не абстрагируют на самом деле. Тяжело вылить весь свой опыт в один пост и обьяснить все нюансы. Но это то к чему я пришел. Сейчас я пишу на Kotlin. Пишу код в функциональном стиле, сверху вниз. Выношу в функции по мере необходимости. Иногда использую классы, но у меня их очень мало. В десятки раз меньше, чем в книгах по ООП ![]() В таком стиле я наиболее продуктивен, быстрее разрабатываю и такой код легче рефакторить, поддерживать и понимать другим. Некоторые мысли очень опытных разработчиков на эту тему:
0
|
|
|
Автоматизируй это!
|
||
| 15.08.2018, 16:31 | ||
|
Как впрочем и по любым другим языкам. Да-да, ты сейчас начнешь писать какой котлин быстрый, модный, молодежный, но эффект то тот же - баги в проде и сложности в поддержке. Так что вкусовщина. ООП не гарантирует хорошего кода, как любая парадигма, как и любой язык программирования, так что используй то, чем умеешь хорошо пользоваться.
1
|
||
|
0 / 0 / 0
Регистрация: 15.08.2018
Сообщений: 7
|
||
| 15.08.2018, 16:43 | ||
Что касается конкретно Kotlin - ребята с JetBrains молодцы. Они знают как писать надёжный софт и сделали язык прагматичным. До этого я писал на Scala и увлекался сильно в сторону ФП. Даже в одно время ушёл в Clojure и Haskell, немного OCaml. Но потом вовремя пришёл в себя и понял, что чистый ФП это путь в никуда. ФП подходит для написания компиляторов, но не для реального софта. Я не против и не за конкретных языков. Можно писать и на Java хорошо. Просто это будет немного сложнее. Kotlin проектировался учитывая все подводные камни, описанные в книге "Effective Java" и по дефолту делает мой код лучше, имхо. А поддержка null-ов на уровне языка это вообще шоколад как по мне ![]() PS. Я никогда не пользовался форумами в серьез. Подскажите как отвечать на сообщение правильно, чтобы человек получил уведомление ?
0
|
||
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|||||||
| 15.08.2018, 16:43 | |||||||
|
Alex Bezhan, внезапно код пишет не парадигма, а человек.
2
|
|||||||
|
0 / 0 / 0
Регистрация: 15.08.2018
Сообщений: 7
|
|
| 15.08.2018, 16:50 | |
|
JIeIIIa Я здесь не пришел, чтобы спорить.
Я могу писать и на ООП тоже. Как ни странно бОльшую часть своей карьеры я писал именно на ООП. Но это не самый продуктивным стиль лично для меня.
0
|
|
|
Автоматизируй это!
|
|
| 15.08.2018, 16:53 | |
|
Не по теме: летс мортал комбат бегин! :D Котлин еще не прошел испытание временем. Я полагаю, что все создатели новых языков думали, что учли подводные камни прошлых поколений, но как мы видим багов в продакшене меньше не становится и ребята вроде меня постоянно востребованы. Против котлина ничего не имею, еще поглядим что на нем понапишут)
0
|
|
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
||
| 15.08.2018, 16:55 | ||
|
0
|
||
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
||
| 15.08.2018, 17:47 | ||
"взятки гладки" (с)ООП это лишь принцип состоящий из инкапсуляции, наследования, и полиморфизма. Это как соль, перец и сахар в кухне, вы берете их сколько вам надо а не "перебарщиваете". И именно, ООП помогает нам смоделировать нашу задачу, и если наша задача большая то моделирование ее делает понятнее. Кстати, если не в виде объектов, то в каком виде вы работаете с данными? С адрессами в памяти? ![]() Или вы думаете что натянув на объектно-ориентируваную оболочку JVM еще одну абстракцию (назовем ее например, Котлин) (кстати, именно ее ООП и позволило это сделать) избавляет вас от ООП? ![]() П.С. Kotlin это объектно-ориентированный язык программирования. ![]() https://ru.wikipedia.org/wiki/Kotlin
0
|
||
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|
| 15.08.2018, 17:50 | |
|
Да похоже человек пришел свой youtube канал попиарить)
0
|
|
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
|
| 15.08.2018, 18:09 | |
|
JIeIIIa, Я думал что программисты не в утубе сидят. (
Это как банкир на выходные ходит на подработки на завод ![]() П.С. потом будет время - зайду, не зря же столько понаписывал ))
0
|
|
|
0 / 0 / 0
Регистрация: 15.08.2018
Сообщений: 7
|
|
| 15.08.2018, 18:12 | |
|
Как я сказал, я не пришел спорить или тратить время каждому разжевать все аргументы.
Я привёл ссылки что об этом думают очень опытные разработчики. Их доклады хорошо обоснованы. Кому интересно тот посмотрит
0
|
|
| 15.08.2018, 18:14 | |||||||
0
|
|||||||
| 15.08.2018, 18:14 | |
|
Помогаю со студенческими работами здесь
36
В каких случаях вызывается конструктор копирования, и стоит ли вообще об этом думать? В каких случаях использовать обращение self::, а в каких $this. В чём разница между ними? В каких случаях надо создавать индексы к полям, а в каких - нет?
В каких случаях создаётся имя в кодировке utf-16 файла или папки, а в каких нет? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|