1. Swift / Говнокод #19948

    −53

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    import Foundation
    
    class UserAddress {
        
        private var ID = Int32()
        private var stateID = Int32()
        private var eavObjectID = Int32()
        private var firstName = String()
        private var lastName = String()
        private var companyName = String()
        private var address = String()
        private var address2 = String()
        private var city = String()
        private var stateName = String()
        private var postalCode = String()
        private var countryID = String()
        private var phone = String()
        
        func setID(ID: Int32) { self.ID = ID }
        func setStateID(stateID: Int32) { self.stateID = stateID }
        func setEavObject(eavObjectID: Int32) { self.eavObjectID = eavObjectID }
        func setFirstName(firstName: String) { self.firstName = firstName }
        func setLastName(lastName: String) { self.lastName = lastName }
        func setCompanyName(companyName: String) { self.companyName = companyName }
        func setAddress(address: String) { self.address = address }
        func setAddressTwo(address2: String) { self.address2 = address2 }
        func setCity(city: String) { self.city = city }
        func setStateName(stateName: String) { self.stateName = stateName }
        func setPostalCode(postalCode: String) { self.postalCode = postalCode }
        func setCountryID(countryID: String) { self.countryID = countryID }
        func setPhone(phone: String) { self.phone = phone }
        
        
        func getID() -> Int32 { return self.ID }
        func getStateID() -> Int32 { return self.stateID }
        func getEavObject() -> Int32 { return self.eavObjectID }
        func getFirstName() -> String { return self.firstName }
        func getLastName() -> String { return self.lastName }
        func getCompanyName() -> String { return self.companyName }
        func getAddres() -> String { return self.address }
        func getAddressTwo() -> String { return self.address2 }
        func getCity() -> String { return self.city }
        func getStateName() -> String { return self.stateName }
        func getPostalCode() -> String { return self.postalCode }
        func getCountryID() -> String { return self.countryID }
        func getPhone() -> String { return self.phone }
    
    }

    Java головного мозга. Писал android девелопер

    Запостил: gorsash, 06 Мая 2016

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

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

      я не знаю свифта, то в ObjC для этого было @property.
      наверняка в свифте еще проще

      Вообще говоря геттеры и сеттеры вручную нигде уже не надо писать
      ни в C# (там есть пропертис) ни в котлине (там они сами создаются)
      и только в жабке нужно добывать уголек

      С другой стороны класс с таким количеством полей которые можно установить и прочитать пахнет говном

      как минимум адрес и имя нужно вынести в отдельные структуры
      Ответить
      • В свифте примерно так же, как в си и котлине.
        var id: Int { set {} get {} }

        причём даже просто var id: Int - это уже проперти
        Ответить
        • ну тогда перед нами человек-"зачем-изучать-язык-на-котором-пишешь"
          Ответить
      • Ни AppCode ни Xcode не генерит сеттеры и геттеры.
        В свифте var и есть @property.

        А приведенный выше говнокод сокращается до
        struct UserAddress {
            
            let ID: Int32
            let stateID: Int32
            let eavObjectID: Int32
            let firstName: String
            let lastName: String
            let companyName: String
            let address: String
            let address2: String
            let city: String
            let stateName: String
            let postalCode: String
            let countryID: String
            let phone: String
        }


        Получаем иммутебльную структуру, для мутабельности let заменить на var, для того, чтобы поля не инициализировать в init, типы сделать Optional и так же let заменить на var
        Ответить
        • логично, что не генерирует. наверное они знают свифт (в отличии от автора кода)

          понял про let. Вот откуда это в котлине
          Ответить
          • > понял про let. Вот откуда это в котлине
            Врядли оттуда :)
            Ответить
            • правильнее сказать: в котлине и свифте это из одного и того же места
              Ответить
              • > в котлине и свифте это из одного и того же места
                Из ML, видимо.
                Ответить
      • > причем тут джава? что человек типа сеттеры и геттеры налепил?
        Это только в жабе модно все поля заворачивать в аксессоры - авось в них нужно будет делать какое-то нестандартное поведение. Ведь потом, если понадобится, будет так сложно заменить поле на геттер или сеттер. Естественно, эти авось случаются в 0.1% случаев. Зато индусы в восторге - вместо 10 строк можно налепить 100.
        Ответить
        • да-да, я уже понял и написал выше что в нормальных современных ЯП аксессоры и мутаторы это сахар, который генерит сам язык

          дел не только в поведении
          еще нужно уметь туда брекпоинт ставить
          Ответить
          • Ради брейкпоинта можно переписать на геттер, а потом откатить
            Ответить
          • Наблюдение за переменной?
            Ответить
        • > Это только в жабе модно все поля заворачивать в аксессоры - авось в них нужно будет делать какое-то нестандартное поведение.

          Очень давно этого (нестандартное поведение в аксессоре) не видел, к слову.

          Современные разрабы набожно верят что аксессоры должны быть тривиальным возвратом/присвоением.

          Это как бы и правильно, и логично, но только вопрос возникает: на кой хер тогда этот аксессор вообще нужен? Я понимаю в крестах с местными граблями двоичной совместимости - но в какой жабе?...
          Ответить
          • в моем любимом пхп в аксессорах любят делать ленивую загрузку данных.
            Ответить

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