
Denis
16.05.2016
21:23:33
При чем тут кресты

Phil
16.05.2016
21:23:43
поддерживать C++/Java чужой код - это адъ пиздец и немцы

Aleksandr
16.05.2016
21:24:25
я в go не увидел только конструкторы. В остальном ООП как ООП. Что хочешь то и лепи.

Google

Aleksandr
16.05.2016
21:24:36
никакой особенности

Denis
16.05.2016
21:25:01
В го соглашение packagename.New()

Aleksandr
16.05.2016
21:25:24
соглашение - не часть языка

Denis
16.05.2016
21:25:48
Либо NewObject()
Ни жарко ни холодно

Igor
16.05.2016
21:26:09
> В остальном ООП как ООП
Ну подожди, я же приводил пример про слайсы и интерфейсы. Что там нет наследования.

Aleksandr
16.05.2016
21:26:12
и New не является конструктором, а является фабрикой со всеми вытекающими

Igor
16.05.2016
21:27:31
Какой-то этот ваш ддд похож на очевидное "разделяй и властвуй".

Phil
16.05.2016
21:27:36
странно, что никто не вспоминает init()

Denis
16.05.2016
21:27:39
> ни жарко ни холодно
Ддд именно учит разделять и властвовать
Так что после можно было без головной боли расширять проект

Aleksandr
16.05.2016
21:28:19

Google

Phil
16.05.2016
21:28:29
конструкторы?

Igor
16.05.2016
21:28:31

Aleksandr
16.05.2016
21:28:44

Phil
16.05.2016
21:29:15
нет

Aleksandr
16.05.2016
21:29:28
ну вот.

Phil
16.05.2016
21:29:40
ну там такого много. начиная с наследования
и второй момент - Go не использует эти понятия и эту терминологию. и когда кто-нибудь начинает заводить песню про классический ООП у некоторых вытекают мозги через глаза. и я не вижу ни единой причины, почему все должны броситься изучать C++ только потому что кто-то решил, что 7-уровневая модель OSI натягивается на TCP/IP

Артем
16.05.2016
21:31:46

Alex
16.05.2016
21:32:33
Послушайте
Что за х я только что прочитал?
ООП в Go примерно как в Perl

Daniel
16.05.2016
21:33:02
чистый синтаксический сахар, да

Alex
16.05.2016
21:33:07
Ну то есть, кто в Perl классическим перловским ООП пользовался - тот и местное поймет
А никакого modern OOP в Go нет

Phil
16.05.2016
21:33:55

Aleksandr
16.05.2016
21:34:44

Phil
16.05.2016
21:34:51

Артем
16.05.2016
21:35:15
один момент, кто что вообще понимает под ООП, а то сдается мне половина обсуждающий не понимает, что обсуждает (

Alex
16.05.2016
21:35:39
С другой стороны - а что такое modern OOP?
Вот мне не хватает в Go совсем не modern OOP

Google

Alex
16.05.2016
21:35:48
А других вещей

Phil
16.05.2016
21:35:53
Некстати, а поясните мне про packagename.New(). гуглится куча использования, а самого соглашения найти не могу

Denis
16.05.2016
21:36:01
Этого всем не хватает :)

Aleksandr
16.05.2016
21:36:03
да нет там никакой аналогии
аналогия есть там, где ее кто-то видит, а не там где ее разрешают видеть. Поэтому да, там есть аналогия, пока ее видят разные разработчики

mitya
16.05.2016
21:36:08
ребзя, а вот например в ассемблере бывает ооп или нет?

Aleksandr
16.05.2016
21:36:21
типа деды в горах говорят

Alex
16.05.2016
21:36:44

@proDOT
16.05.2016
21:36:46

Phil
16.05.2016
21:36:48
устное
ну ок. хоть устное что ли. соглашение собственно о чём?

Alex
16.05.2016
21:36:52
А почему нет?

Aleksandr
16.05.2016
21:37:36

Aleksandr
16.05.2016
21:37:38
на таком уровне
по факту это фабрика, а не замена конструктору

Daniel
16.05.2016
21:38:02
уйбля
коллеги
уймитесь

Alex
16.05.2016
21:38:38
Так а конструктор это фабрика и есть

Phil
16.05.2016
21:38:39

Alex
16.05.2016
21:38:43
Вы таки не поверите

Google

mitya
16.05.2016
21:38:55

Phil
16.05.2016
21:39:05
Я не знаю что такое "фабрика"

Alex
16.05.2016
21:39:08
Конструктор - это так называемый “фабричный метод”

Daniel
16.05.2016
21:39:21

Phil
16.05.2016
21:39:41

Aleksandr
16.05.2016
21:39:43

Daniel
16.05.2016
21:39:48
в го этот срануй New() - метод именно фабрики, в качестве которой выступает пакет
но это все никуда никому не впилось

Alex
16.05.2016
21:40:02

Admin
ERROR: S client not available

Alex
16.05.2016
21:40:08
Если правильно видимость сделать

@proDOT
16.05.2016
21:40:23

Alex
16.05.2016
21:40:24
Скажем, убрав все в пакет, и назвав тип с маленькой буквы

Aleksandr
16.05.2016
21:40:59

Phil
16.05.2016
21:41:05
возвращаясь к New() - в чём суть соглашения?

Артем
16.05.2016
21:41:16

Alex
16.05.2016
21:42:40

Aleksandr
16.05.2016
21:42:42

Google

Alex
16.05.2016
21:42:56

Aleksandr
16.05.2016
21:43:14
вообще мне эта приватность с маленькой буквы не в кайф) ну ладно

Артем
16.05.2016
21:43:48
могу привести пример, вот есть замечательный пакет https://github.com/grafov/m3u8
но у MediaPlaylist есть недочет - он не может увеличивать размер самого playlist, сам автор признает, что это надо улучшать в заметке TODO
но size (не помню точно название поля) - скрыто, то есть никак не повлиять на это, и если у нас playlist раззросся больше изначально заданного размера - все, пичаль беда

Denis
16.05.2016
21:44:01
возвращаясь к New() - в чём суть соглашения?
если пакет отвечает за одну сущность, то New() инициализирует эту сущность
package book
func New() *Book {}
где-то в клиентском коде:
book.New()
если сущностей много, то NewBook(), NewMatrix(), NewWindow()

Артем
16.05.2016
21:44:07
и методов доступа нет
так что скрывать все подряд не всегда гуд

Denis
16.05.2016
21:46:02
Пример пакет errors
errors.New()

Aleksandr
16.05.2016
21:46:03
Надо жить по SOLID и все будет normique
я вот смотрю либы на гитхабике и у меня такие мысли закрадываются: то ли гоферы о solid не слышали, то ли создатель go сказал, что go - особенный язык, поэтому говнокодьте в кайф. Я не шучу - я не пойму почему код на go такого низкого качества. Возможно это удел всех низкоуровневых языков? Я не из той области и о c#/c++ слышать не слыхивал.

Alex
16.05.2016
21:46:42
Что на C#, что на C++ можно писать нормального качества код

Артем
16.05.2016
21:47:32

Phil
16.05.2016
21:47:39

Denis
16.05.2016
21:47:52
solid вообще ничего не решает, он говорит, но на практике солид почти никогда не выходит, всегда кто-то начинает связвать слои, где-то это происходит явно, где-то косвенно
да

Aleksandr
16.05.2016
21:48:29

Denis
16.05.2016
21:48:41
ху.вая парадигма

Phil
16.05.2016
21:48:43

Артем
16.05.2016
21:51:17
https://github.com/luciotato/golang-notes/blob/master/OOP.md
в тему
ещё одно мнение об ООП в go

Aleksandr
16.05.2016
21:52:47
еще один увидел аналогию, которой нет)

Daniel
16.05.2016
21:52:49

Phil
16.05.2016
21:53:37
надой найти миллион. и читать вам лекции по Plan9 и его истории. чтобы прекратилось это притягивание классики тада где от неё четверть века сбежать пытаются

Aleksandr
16.05.2016
21:56:09
прекращай общаться лозунгами. пытаются сбежать, да не сбежали, переименовали, раздробили, попросили не притягивать аналогии. А оно работает также как "классика"