русский
Germany.ruForen → Архив Досок→ Programmierung

Резюме для программиста

25.11.22 13:13
Re: Резюме для программиста
 
alex445 коренной житель
in Antwort alex445 23.11.22 19:32, Zuletzt geändert 25.11.22 13:20 (alex445)

Я смотрю код разных библиотек, и там если надо хранить некое универсальное значение (скажем, для контейнера в котором может храниться почти любой тип), то многие используют object. Например


public void SetFilterValue(object value)

{

if (

(FilterPropertyType == typeof(DateTimeOffset)

||

FilterPropertyType == typeof(DateTimeOffset?)) && value != null && value is DateTime?)

}


И это ещё "скромно". Такое есть в исходниках многих либ, в том числе "солидных", в которые коммитят или за которыми следят разные "гуру" и "евангелисты", главные по разработке какого-нибудь широко используемого фреймворка (вот как этот). Часто втречаются деревья на десятки if и прочих ветвлений, т.к. основной контейнер для хранения чего-то сделан универсальным (типа object или string), и потом его значение долго парсят по типам или из строки.


Похоже, что это норма и всякие "семизнаки и гуры" этим не брезгуют. ))


Я всегда считал, что есть, наверное, какой-то более надёжный с точки зрения ООП способ. Например, как-то продумать систему классов, чтобы для каждого типа был свой строготипизированный контейнер. А тут гуры лепят не оглядываясь портянки и в динамике проверяют типы, как какие-нибудь джаваскриптизёры. Что интересно, что в их статейках "как надо программировать" таких портянок обычно не встретишь - там как раз рассусоливания о гениальных структурах кода и проектировании систем классов на примерах разных животных или автомобилей - всё аккуратненько, коротенько и цивильно. Вот есть кошечки и собачки, а вместе они животные и живут в маленьком уютном домике - вот вам родитель, вот потомок, вот контейнер. Видите, как хорошо, тепло и чистенько. Никаких портянок, никаких выведений типов из object или строк.

 

Sprung zu