Сегодня я проводил рефакторинг некоторого кода и снова посетил старого друга, класс Address (см. Ниже). Мне пришло в голову, что в нашем приложении мы не делаем ничего особенного с адресами - никаких запросов, только легкая проверка и частая сериализация в JSON. Единственные «полезные» свойства с точки зрения разработчика - это метка и персона.
Итак, я рассмотрел вопрос о рефакторинге модели Address для использования собственного AddressProperty (см. Ниже), что мне кажется полезным, но вне всяких сомнений я не вижу каких-либо убедительных преимуществ.
Какой метод вы бы выбрали, почему и какие компромиссы определяют это решение?
# a lightweight Address for form-based CRUD
# many-to-one relationship with Person objects
class Address(db.Model):
label=db.StringProperty()
person=db.ReferenceProperty(collection_name='addresses')
address1=db.StringProperty()
address2=db.StringProperty()
city=db.StringProperty()
zipcode=db.StringProperty()
# an alternate representation -- worthwhile? tradeoffs?
class Address(db.Model):
label=db.StringProperty()
person=db.ReferenceProperty(collection_name='addresses')
details=AddressProperty() # like db.PostalAddressProperty, more methods