Goвно / Говнокод #27411 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
func getTransport(tt string) (iTransport, error) {
	if tt == "scooter" {
		return newElectricScooter(), nil
	}
	if tt == "quadcopter" {
		return newQuadcopter(), nil
	}
	return nil, fmt.Errorf("Wrong type")
}

https://habr.com/ru/post/556512/
> Factory Method Pattern
> Привет, друзья. С вами Alex Versus.
> Ранее мы говорили про шаблоны проектирования Одиночка и Стратегия, про тонкости реализации на языке Golang.
> Сегодня расскажу про Фабричный метод.

Запостил: PolinaAksenova PolinaAksenova, (Updated )

Комментарии (48) RSS

  • В сегод-няш-ней рубрике передачи "Всё для дома": удобные и полезные функции (≧◡≦)!
    Ответить
    • ОчУмелые ручки: абстрактная фабрика из пластиковых бутылок
      Ответить
  • Я очень хочу статью про фабричный метод на «С++», потому что никак не могу его написать (((

    Вот про «Golang» статья есть, про «Java» тоже есть, а про фабричный метод на «С++» статьи нет... Видимо, так я и не узнаю как же такое написать на крестах. У вас есть знакомые редакторы или авторы на Хабре, которые знают «С++»? Можете попросить их написать такую статью?
    Ответить
    • Кстати, гэнг оф фор дает примеры на плюсах
      Ответить
  • Еще раз убеждаюсь, что Go это диалект PHP.

    https://www.udemy.com/user/sergei-1146/
    >Professional full-stack developer of IT and web products. I develop in PHP,
    а, ну как я и подумал
    ---------------
    https://habr.com/ru/post/553298/

    Он еще учит писать крутые тесты
    s.SetTitle("First value")
       checkTitle := s.GetTitle()
    
       if checkTitle != "First value" {
          t.Errorf("First value is not setted") //и малость английский язык
       }
    Ответить
    • Кстати да. «PHP» был создан, чтобы даже круглый ДУРАК мог сделать себе хомяка. «Go» был создан, чтобы даже самый провинциальный ИНДУС мог писать какие-то сервисы для «Google».
      Ответить
      • Забавно, что вот ты откырваешь вики про го, и тебя сразу же встречает пиздеж

        >static typing
        в языке без генериков

        >and run-time efficiency (like C)
        в языке с GC

        >readability and usability (like Python or JavaScript),
        ридабили как в JS это такой тонкий троллинг


        Пиздеть вообще очень важно когда ты пишешь на хуевом языке.

        Например, во второй ссылке можно встретить такой диалог:

        --А в Go еще не завезли нормальных контейнеров зависимостей?
        --Контейнеры в го особо и не нужны

        кликаем на автора второго комментария, и узнаем, что он написал статью
        "Методы организации DI и жизненного цикла приложения в GO"

        --А что, круглого колеса у вас не изоберли?
        --Круглое колесо не особо нужно, обычно хватает квадратного (пишет статью "как скруглить квадратное колесо")

        Фу
        Ответить
        • > ридабили как в JS это такой тонкий троллинг
          Python в проектах крупнее пары сотен строчек — тоже, в общем-то, далеко ня образец читаемости.
          Ответить
          • но ему далеко до
            var Note = Backbone.Model.extend({
            
              initialize: function() { ... },
            
              author: function() { ... },
            
              coordinates: function() { ... },
            
              allowedToEdit: function(account) {
                return true;
              }
            
            });
            
            var Library = Backbone.Model.extend({
              constructor: function() {
                this.books = new Books();
                Backbone.Model.apply(this, arguments);
              },
              parse: function(data, options) {
                this.books.reset(data.books);
                return data.library;
              }
            });

            https://backbonejs.org/#Model-extend

            впрочем, в 2021 уже так не надо делать
            Ответить
        • > >static typing
          > в языке без генериков

          Где противоречие?
          Статическая типизация весьма больна без полиморфизма, но у гугла есть 10k или сколько там инженеров, можно одного посадить писать имплементацию алгоритма для строк, другого — для интов, третьего — для флотов, и т.д. GAGNI (Google Ain't Gonna Need It)
          Ответить
  • "У каждого языка и его комьюнити есть свое понимание какие инструменты использовать. В Go распространен подход к выполнению большенства рутинных задач явно, уменьшая сложность понимания кода."
    https://habr.com/ru/company/vivid_money/blog/531822/#comment_22399930


    Какой чудесный эвфемизм для мартышкиного труда.

    -- Зачем ты в каждом проекте с ноля делаешь то, для чего уже 20 лет существует библиотека?

    -- Я предпочитаю всё делать явно уменьшая сложность кода.

    Философия PHP
    Ответить
  • кто не писал на java или с# те не умеют программировать
    Ответить
    • Кто в детстве не писал абстрактных фабрик стратегий -- у того нет сердца
      Кто в зрелом возрасте и полюбил свободные функции у того нет мозга

      но если без шуток, то ООП в джаве и сишрап конечно на голову лучше чем ооп в пхп и таком вот го

      Это не потому, что ооп это хорошо

      Это потому, что ооп лучше говна.
      Ответить
          • Гуй – это хорошо, можно тыкать кнопку и смотреть картинку. Про DI я не знаю, возможно тоже хорошо. А JSON это тоже хорошо, можно отправить файл в base64 или какой-нибудь текст.

            А что?
            Ответить
            • >Гуй – это хорошо, можно тыкать кнопку и смотреть картинку.
              то есть ты бы хотел, чтобы у компилятора вместо command line api был бы гуй?

              >А JSON это тоже хорошо
              хотел бы ты данные между гарнтитурой и usb контроллером передавать jsonом?
              Ответить
              • > то есть ты бы хотел, чтобы у компилятора вместо command line api был бы гуй

                Если оно будет написано с использованием ООП, то сойдёт и так и этак.

                Но вообще-то я не говорил, что command line API – это плохо, это вообще-то тоже хорошо.

                > хотел бы ты данные между гарнтитурой и usb контроллером передавать jsonом?

                А что там читать? Байты какие-нибудь? Читать байты не нужно, значит не хотел бы.
                Ответить
  • > (iTransport, error)
    > nil, error
    > result, nil

    Either или variant тоже оказались нинужными?
    Ответить
    • Это туплы из питона, своё не смогли придумать, вот и накопипастили оттуда!
      Ответить
      • Этот паттерн про result, error -- это lua скорее. В питоне исключения есть.
        Ответить
        • Да, ты прав. В «Go» даже не осилили туплы скопировать из питона, лол!
          Ответить
          • Пиздец, дожили. Хаскельный `Either' теперь из `Раста'.
            Ответить
            • Хочешь, поспорю, что вовсе не Хаскель стоял перед глазами у написавшего это?
              Ответить
              • в хаскеле небось изер нужно запатеррнматчить, не?

                а тут , как я поня, нихуя не проверяют, а тупо возвращают два значения?
                Ответить
                • Да и в Расте нужно. Поэтому "пытались".

                  Скорее всего дальше будут смотреть, где nil и решать исходя из того. Вангую, что на nil будут проверять значение, а не ошибку, и когда-нибудь это эпично навернётся, когда окажется, что nil — валидное значение.
                  Ответить
                • > в хаскеле небось изер нужно запатеррнматчить, не?

                  Нят, монада за тебя это сделает.
                  Ответить
                  • ну тоесть в го делают руками то, что хаскель делает автоматически уже много-много лет?

                    охуеть прогресс
                    Ответить
                    • Гагни же. С 10k инженеров, и длинной очередью желающих сесть на их места, можно и руками это делать, главное чтобы винтики заменяемыми были.
                      Ответить
                      • "В Go распространен подход к выполнению большенства рутинных задач явно" (c)
                        Ответить
                          • Я так понимаю, в гоогле много монотонной тупой обезьяней работы по написанию glue code, которую 20 лет назад делали бы на Perl/sed/awk, а теперь решили делать на go, чтобы иметь какую-то стат типизацию, форматирование, и стат линковку (чтобы везде работало)?
                            Ответить
                • Не, там сахарок монады сам всё заматчит, для тебя это почти как исключение -- кинул и забыл. Но можно заматчить и обработать при желании.
                  Ответить
    • какой багор ))
      вот пример из туторила
      https://golang.org/doc/tutorial/handle-errors

      // Hello returns a greeting for the named person.
      func Hello(name string) (string, error) {
          // If no name was given, return an error with a message.
          if name == "" {
              return "", errors.New("empty name")
          }
      
          // If a name was received, return a value that embeds the name
          // in a greeting message.
          message := fmt.Sprintf("Hi, %v. Welcome!", name)
          return message, nil
      }

      что будет, если пустая строка это валидный вариант, и вызывающая сторона забудет проверить error?

      (про отсутствтие строковой интерполяции гыгыкать не буду)
      Ответить
      • > вызывающая сторона забудет проверить error

        А ты не забывай! Деды на сишке вон сколько лет писали и не забывали.
        Ответить
        • ну так сишка же это плохо, именно потому отказались от нее в пользу го


          языки проходят все стадии развития, как и эмбрионы

          сначала они сделали без генериков
          потом завезут генерики
          потом завезут мэйби
          потом сделают новый язык, опять без генериков и мэйби
          Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8