Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
22 / 10 / 2
Регистрация: 25.06.2018
Сообщений: 155

В каких случаях стоит писать метод в новом классе?

14.08.2018, 13:11. Показов 1962. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас дошел до классов и не до конца понимаю когда следует метод писать в мэйне а когда в новом классе?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2018, 13:11
Ответы с готовыми решениями:

В каких случаях стоит применять метод File.AppendText()?
Думал, что File.AppendText - простая надстройка над using (StreamWriter sw = new StreamWriter(path)) { ...

Так в каких случаях стоит использовать наследование?
Здравствуйте, уважаемое сообщество. После прочтения "C++ Coding Standards" by Herb Sutter and Andrei Alexandrescu, возникли некоторые...

В каких случаях стоит инкапсулировать данные в объект?
а в каких случаях можно обойтись и передать, например, массив/коллекцию значений?

35
15.08.2018, 11:10
Студворк — интернет-сервис помощи студентам

Не по теме:

Aviz__, я хочу чтобы он про статик выяснил)

0
 Аватар для Aviz__
2744 / 2053 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
15.08.2018, 12:01
Цитата Сообщение от Welemir1 Посмотреть сообщение
статик выяснил

Не по теме:

благородное желание!



Добавлено через 43 минуты
cinemaster4d, в кладовке нашлось)) https://habrahabr.ru/post/345658/ - что такое ООП
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
15.08.2018, 12:10
Цитата Сообщение от Aviz__ Посмотреть сообщение
https://habrahabr.ru/post/345658/ - что такое ООП
Это не про "что такое ООП", а про "что такое классы и объекты в Java".

Про "что такое ООП" рассказано в SICP в главе про моделирование электрических цепей.
0
 Аватар для Aviz__
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
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,688
Записей в блоге: 29
15.08.2018, 16:31
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
ООП это лажа.
вспомнился одно из видео Боба Мартина по этому поводу. Если кратко то ни одна парадигма не заставила людей писать код лучше и ни один язык не позволил писать короче, проще, понятнее и супер поддерживаемее. Он и по Котлину прошелся.
Как впрочем и по любым другим языкам.
Новые языки приходят и уходят, а джава остается) как и пайтон
Да-да, ты сейчас начнешь писать какой котлин быстрый, модный, молодежный, но эффект то тот же - баги в проде и сложности в поддержке. Так что вкусовщина.
ООП не гарантирует хорошего кода, как любая парадигма, как и любой язык программирования, так что используй то, чем умеешь хорошо пользоваться.
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, внезапно код пишет не парадигма, а человек.
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
В десятки раз меньше, чем в книгах по ООП
У другого функций получается в десятки раз больше, чем в ООП. Поэтому функциональный стиль хуже?
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
Инкапсуляция... с помощью обычных функций.
Можно пример?
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
И сама природа бизнес-требований к софту она не обьектно-ориентированна. Она последовательна.
Как-то странно сравнивать понятия из разных категорий.
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
засыпать себя сотней абстракций, которые ничего не абстрагируют на самом деле
Абстракция ради абстракции? В каких книжках такому учат?
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
нужно быть очень опытным чтобы разглядеть их и не наступить на грабли
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
В таком стиле (функциональном) я наиболее продуктивен, быстрее разрабатываю
Не научились готовить ООП? Бывает...
2
0 / 0 / 0
Регистрация: 15.08.2018
Сообщений: 7
15.08.2018, 16:50
JIeIIIa Я здесь не пришел, чтобы спорить.

Я могу писать и на ООП тоже. Как ни странно бОльшую часть своей карьеры я писал именно на ООП. Но это не самый продуктивным стиль лично для меня.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,688
Записей в блоге: 29
15.08.2018, 16:53

Не по теме:

летс мортал комбат бегин! :D


Котлин еще не прошел испытание временем. Я полагаю, что все создатели новых языков думали, что учли подводные камни прошлых поколений, но как мы видим багов в продакшене меньше не становится и ребята вроде меня постоянно востребованы. Против котлина ничего не имею, еще поглядим что на нем понапишут)
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
15.08.2018, 16:55
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
Он сделан в ООП стиле
Вы пишите на Котлин в функциональном стиле. Так более продуктивны. При этом людей учите писать на Котлине в ООП стиле. Ну ок...
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
15.08.2018, 17:47
Цитата Сообщение от Alex Bezhan Посмотреть сообщение
ООП это лажа.
Мне как не программисту не страшен ваш маленький холивар "взятки гладки" (с)

ООП это лишь принцип состоящий из инкапсуляции, наследования, и полиморфизма. Это как соль, перец и сахар в кухне, вы берете их сколько вам надо а не "перебарщиваете".
И именно, ООП помогает нам смоделировать нашу задачу, и если наша задача большая то моделирование ее делает понятнее.
Кстати, если не в виде объектов, то в каком виде вы работаете с данными? С адрессами в памяти?
Или вы думаете что натянув на объектно-ориентируваную оболочку 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2018, 18:14
Помогаю со студенческими работами здесь

В каких случаях вызывается конструктор копирования, и стоит ли вообще об этом думать?
В книге Г. Шилдта написано, что конструктор копирования может неявно вызываться, при инициализации объекта значением, которое возращает...

В каких случаях использовать обращение self::, а в каких $this. В чём разница между ними?
Привет! Сейчас пишу регистрацию в стиле ооп. Пишу функцию __construct в классе Registration class Registration{ protected $Name; ...

В каких случаях надо создавать индексы к полям, а в каких - нет?
Не могу понять, в каком случае надо создовать индексы к полям а вкаких нет. если надо, то в каком случае индекс надо создать для каждого...

В каких случаях нужно создавать динамические переменные, а в каких статические?
такой же вопрос и по массивам ! Объясните пожалуйста !

В каких случаях создаётся имя в кодировке utf-16 файла или папки, а в каких нет?
Друзья! Вынужден ковыряться со сторонними файлами, где без кодировки utf-16 не обойтись, век бы её не знал. Хотелось бы выяснить принцип...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки 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 с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru