Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: На счет ООП программирования  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 3008
казинак
qi_ip
Недавно делали код ревью, сказали, что код работает, но больше смахивает на "процедурное программирование".
я тебе один умный вещь скажу, но только ты не обижайся.(c)
те кто тебе это сказал, просто пукнули в лужу
еслиб они конкретно сказали, что это не будет работать, или будет работать плохо, или трудно сопровождать, причем аргументированно, то был бы смысл задуматься над их словами...
а типа : "смахивает на процедурное..." - это просто им отбрехаться на митинге надо было


Вот мне тоже кажется. Тут либо одно либо другое. Либо ты пишешь класс и создаешь его объект, либо ты пишешь процедуру (т.е. метод) в классе и все действия производишь в нем.
А когда кто-то говорит что это "смахивает" на процедурное, то это скорее смахивает на то, что он идиот. Это как быть немножко беременной. Тут либо одно либо другое. "Смахивает" - не прокатит.
7 июл 19, 14:08    [21922223]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
процедурный код отличается от ООП визуально
его сразу видно
но в яве всё классы, так что даже хз, как там с этим...
7 июл 19, 14:43    [21922234]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
qi_ip
Member

Откуда:
Сообщений: 591
полудух
процедурный код отличается от ООП визуально
его сразу видно
но в яве всё классы, так что даже хз, как там с этим...

Как Вы его отличаете, если не секрет? Какие параметры смотрите? На что обращаете внимание?
Спасибо!
7 июл 19, 19:32    [21922301]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
В объектном программировании каждая процедура снабжается виртуальным параметром.
Это указатель на текущий объект. Так называемый this. В ООП языках (C++/C#) этот this
поддерживается на уровне языка и компиллятора. Тоесть каждый метод вызывается
в КОНТЕКСТЕ текущего объекта.

В процедурном программировании ничего подобного нет.
7 июл 19, 20:15    [21922307]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
процедурное программирование это просто портянка ф-й
у тех кто с ООП не знаком, они даже по файлам то раскиданы не будут толком
ну а дальше открываем файл, а там:
$this->
public/protected/private
extends
interface/abstract
7 июл 19, 20:24    [21922310]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
сам стиль кода сильно отличается у новичка и того, кто крупные многопользовательские проекты создавал
в коде новичка ничего не понятно - где кто за что отвечает и что происходит
в коде спеца разберётся и студент
7 июл 19, 20:25    [21922311]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 3008
mayton
В объектном программировании каждая процедура снабжается виртуальным параметром.
Это указатель на текущий объект. Так называемый this. В ООП языках (C++/C#) этот this
поддерживается на уровне языка и компиллятора. Тоесть каждый метод вызывается
в КОНТЕКСТЕ текущего объекта.

В процедурном программировании ничего подобного нет.


Правда в ООП this пишут не часто, разве что в конструкторе да в методе, если названия переменных совпадают, ну да ладно. Он как бы подразумевается, но за счет того, что подразумевается, его как раз и используют не часто.
7 июл 19, 20:31    [21922312]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 3008
полудух
сам стиль кода сильно отличается у новичка и того, кто крупные многопользовательские проекты создавал
в коде новичка ничего не понятно - где кто за что отвечает и что происходит
в коде спеца разберётся и студент


значит ли это, что студент это спец? Раз легко разберется.
7 июл 19, 20:33    [21922314]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
Кто в топике считает что процедурно == плохо?

Большая часть компьютерных игр эпохи 90х написана в процедурном стиле.
7 июл 19, 21:33    [21922324]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
Мозговой_слизень
полудух
сам стиль кода сильно отличается у новичка и того, кто крупные многопользовательские проекты создавал
в коде новичка ничего не понятно - где кто за что отвечает и что происходит
в коде спеца разберётся и студент


значит ли это, что студент это спец? Раз легко разберется.

нет, это значит, что спец это спец, и его легко разобрать
mayton
Кто в топике считает что процедурно == плохо?

Большая часть компьютерных игр эпохи 90х написана в процедурном стиле.

игры эпохи 90х весьма просты и их намного проще сопровождать, чем нонешние
тут весь вопрос в лёгкости сопровождения программы
её можно считать написанной буквально сразу, как только запускается
а всё остальное время это сопровождение и доработка
именно она и занимает всё основное время
ООП сильно экономит это время
и чем дальше, тем сильнее
7 июл 19, 22:32    [21922338]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
игры 90х, кстати, на C писали
а потом "зачем-то" изобрели ООП С++
7 июл 19, 22:33    [21922339]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
Несколько цитат с хабра
Объектно-ориентированная версия «спагетти кода» — это, конечно, «лазанья код» (очень много слоев).

— Roberto Waltman


Я изобрел понятие «объектно-ориентированный», но могу заявить, что не имел в виду C++ при этом.

— Alan Kay
7 июл 19, 22:42    [21922340]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
забыл ник
Member

Откуда:
Сообщений: 3045
mayton

Я изобрел понятие «объектно-ориентированный», но могу заявить, что не имел в виду C++ при этом.

— Alan Kay

И это правда. его задумка гораздо ближе к акторам, чем к уродцам вроде с++ и java.
7 июл 19, 23:02    [21922348]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
Интересно на чём щас пишут яблочники? Вроде как они от Objective-C отказались.
Видимо были причины. Неудобство там? Моральное старение? Просто требования рынка?

Яблочники есть в топике?
7 июл 19, 23:07    [21922350]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
забыл ник
Member

Откуда:
Сообщений: 3045
mayton
Интересно на чём щас пишут яблочники? Вроде как они от Objective-C отказались.
Видимо были причины. Неудобство там? Моральное старение? Просто требования рынка?

Яблочники есть в топике?

swift же
7 июл 19, 23:43    [21922363]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
забыл ник
уродцам вроде с++

давно он уродцем стал?
я бы сказал, что ООП в C++ великолепен
лучше чем в ПХП/питоне том же
а где же "правильный ООП" по-вашему?
7 июл 19, 23:47    [21922366]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
mayton
Несколько цитат с хабра
Объектно-ориентированная версия «спагетти кода» — это, конечно, «лазанья код» (очень много слоев).

— Roberto Waltman

это сетевой-софт-инженер (сокеты пишет, типа), насколько я понял
там нет ООП
и сказал он, в общем-то, херню, без понимания смысла ООП (упрощение сопровождения)

Я изобрел понятие «объектно-ориентированный», но могу заявить, что не имел в виду C++ при этом.

— Alan Kay

после него ООП доработали 38 раз Картинка с другого сайта.
7 июл 19, 23:50    [21922368]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
mayton
Интересно на чём щас пишут яблочники? Вроде как они от Objective-C отказались.
Видимо были причины. Неудобство там? Моральное старение? Просто требования рынка?

Яблочники есть в топике?

так они ж пишут софт так, чтобы он тормозил
это же их смысл жизни - продавать новые модели "с оптимизированной ОСью"
7 июл 19, 23:53    [21922370]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
полудух
mayton
Интересно на чём щас пишут яблочники? Вроде как они от Objective-C отказались.
Видимо были причины. Неудобство там? Моральное старение? Просто требования рынка?

Яблочники есть в топике?

так они ж пишут софт так, чтобы он тормозил
это же их смысл жизни - продавать новые модели "с оптимизированной ОСью"

Почитал статейки. Визуально он должен быть в 1.5-2 раза компактнее.
+

Swift
class MyClass {
    var a: Int
    var b: String
    init(a: Int, b: String) {
        self.a = a
        self.b = b
    }
}

var mc = MyClass(a: 2, b: "string"


Objective-C
//Myclass.h
#import <Foundation.h>
@interface MyClass: NSObject
- (id) initWithA: (int)a andB: (NSString *)b;
@end

//Myclass.m
#import "MyClass.h"
@interface MyClass()
	@property (assign, nonatomic) int a;
	@property (strong, nonatomic) NSString *b;
@end
@implementation MyClass
	@synthesize a;
	@synthesize b;
	- (id) initWithA: (int)a andB: (NSString *)b {
		self = [super init];
		if (self) {
			_a = a;
			_b = b;
		}
		return self;
	}
@end

MyClass *mc = [[MyClass alloc] initWithA: 2 andB @"string"];

Я не думаю что они такие-уж вредители. Всё таки им нужно не завалить
свои-же спринты по перформанс-тестингу.
8 июл 19, 00:20    [21922375]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
забыл ник
Member

Откуда:
Сообщений: 3045
автор
давно он уродцем стал?

да с самого рождения, само собой.

автор
я бы сказал, что ООП в C++ великолепен

а алан кей, создатель термина ооп считает немного иначе:) для обьективного сравнения попрошу вас указать ссылки на ваши публикации. до тех пор мнение алана для меня авторитетнее
ну и обьясни заодно как в обьектноориентированном языке могут быть примитивные типы, статические методы и классы:)
автор
лучше чем в ПХП/питоне том же


нет ну это просто 5+.а еще лучше чем в жабаскрипте.

автор
а где же "правильный ООП" по-вашему?

Я же написал, что ближе всего подходит модель акторов, а следовательно erlang/scala. хотя последняя мультипарадигменная.

Я в принциме не принимаю ооп как таковое, потому что оно не имеет под собой никской математической основы, в отличие от любой другой, даже процедурной:)
ну а напоследок задача со звездочкой, опиши в чем же суть ооп, и чем эта парадигма отличается от других. Хинты:
1) нужна ли инкапсуляция если состояние не шарится?
2) чем отличается параметрический, adhoc и subtype полиморфизм
3) является ли наследование единственным методом переиспол зования кода? а как насчет prefer composition over inheritance от апологетов ооп:)
8 июл 19, 00:37    [21922376]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
До того как начнется метание навоза на турбину.

С++ - это мультипарадигменный язык. Как минимум к ООП можно добавить обобщённое.
И можно просто процедурно говно-кодить.

Тоесть он поддерживает ООП. Но ООП не является доминирующей фичей. Или определяющей
бытие и сознание кодера.
8 июл 19, 01:04    [21922380]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
mayton
Member

Откуда: loopback
Сообщений: 42879
полудух
mayton
Несколько цитат с хабра
пропущено...

это сетевой-софт-инженер (сокеты пишет, типа), насколько я понял
там нет ООП
и сказал он, в общем-то, херню, без понимания смысла ООП (упрощение сопровождения)

По аналогии с микросервисами. Помните? Была картинка. Большая какашка. Это типа монолит.
И множество мелких какашек. Это типа после миграции монолита в микросервисы.
8 июл 19, 01:07    [21922382]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
забыл ник
Member

Откуда:
Сообщений: 3045
mayton
До того как начнется метание навоза на турбину.

С++ - это мультипарадигменный язык. Как минимум к ООП можно добавить обобщённое.
И можно просто процедурно говно-кодить.

Тоесть он поддерживает ООП. Но ООП не является доминирующей фичей. Или определяющей
бытие и сознание кодера.

ты прав, но я предполагал что сие очевидно, а еще там можно усмотреть элементы фп и dependent types, такой себе комбайн.
но главный поинт в том, что надо просто задуматься что такое ооп и есть ли в нем чтото чего нет в других парадигмах? коода ты знаешь один язык или семейство похожих языков, сложро вылезти за их рамки. а стоит немного поразмыслить и оппа. а король то голый. даже муть вроде все есть обьект не катит, по перечисленным выше причинам:)
8 июл 19, 01:10    [21922383]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
mayton
Почитал статейки. Визуально он должен быть в 1.5-2 раза компактнее.

мда, так себе лапша... на любителя

забыл ник
а алан кей, создатель термина ооп считает немного иначе:)

маловато "создать термин", мягко говоря Картинка с другого сайта.
после этого создания ООП довели до такого состояния, что БЕЗ него большие проекты в 2-5 раз сложнее сопровождать
забыл ник
Я в принциме не принимаю ооп как таковое, потому что оно не имеет под собой никской математической основы, в отличие от любой другой, даже процедурной:)

вы "не туда воюете" Картинка с другого сайта.
ООП не про математику
он про упрощение сопровождения кода (а сопровождение кода это гораздо, намного, сильно-сильно дольше, чем создание первой версии. Сопровождение это вся жизнь и развитие проекта)
забыл ник
как в обьектноориентированном языке могут быть примитивные типы, статические методы и классы:)

как в ООП могут быть классы? серьёзно?
прочитайте книжку по ООП плиз, а то людей сбиваете с правильного пути своей критикой на пустом месте.
8 июл 19, 01:15    [21922385]     Ответить | Цитировать Сообщить модератору
 Re: На счет ООП программирования  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 936
mayton
полудух
пропущено...

это сетевой-софт-инженер (сокеты пишет, типа), насколько я понял
там нет ООП
и сказал он, в общем-то, херню, без понимания смысла ООП (упрощение сопровождения)

По аналогии с микросервисами. Помните? Была картинка. Большая какашка. Это типа монолит.
И множество мелких какашек. Это типа после миграции монолита в микросервисы.

и первый же "навоз" полетел от автора Картинка с другого сайта.
монолит разбитый на микросервисы это ок
монолит разбитый на файлы это ок
монолит разбитый на классы это ок
в чём какашка - не понял...
8 июл 19, 01:18    [21922386]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Java Ответить