1. Если у тебя функция/цикл/if и т.д. не помещается на один экран, значит что-то не так, и надо бы к этой функции получше приглядеться, разделить её на простые куски и т.д.
2. Если dynamic_cast используется только для проверки типа, и результат сразу выбрасывается, то это значит, что кто-то радикально неправильно что-то спроектировал. dynamic_cast - операция достаточно дорогая, чтобы использовать её таким способом.
В данных случаях некрасивость кода на C++ является совершенно чётким индикатором ошибки проектирования.
>1. Если у тебя функция/цикл/if и т.д. не помещается на один экран, значит что-то не так, и надо бы к этой функции получше приглядеться, разделить её на простые куски и т.д.
Ты прав. :)
>2. Если dynamic_cast используется только для проверки типа, и результат сразу выбрасывается, то это значит, что кто-то радикально неправильно что-то спроектировал. dynamic_cast - операция достаточно дорогая, чтобы использовать её таким способом.
Когда у меня стал вопрос приведения указателей на классы, то я прочитал, что dynamic_cast а) работает в run-time б) требует поддержки RTTI, которая не всегда может быть (или может быть выключена) Поэтому я использовал static_cast, т.к. точно знал что там за типы.
Но вопрос даже не в этом. Иде я в том, что в случае Паскаля запись выглядит очень понятно, почти на английском.
В общем случае dynamic_cast нельзя заменить на static_cast. Это разные операции. Если у тебя после этого программа прдолжила работать, то значит dynamic_cast тебе там и не был нужен.
А что касается run-time, rtti и прочего, как ты думаешь, а что использует эта операция в pascal? :)
Comments 6
2. Если dynamic_cast используется только для проверки типа, и результат сразу выбрасывается, то это значит, что кто-то радикально неправильно что-то спроектировал. dynamic_cast - операция достаточно дорогая, чтобы использовать её таким способом.
В данных случаях некрасивость кода на C++ является совершенно чётким индикатором ошибки проектирования.
Reply
Ты прав. :)
>2. Если dynamic_cast используется только для проверки типа, и результат сразу выбрасывается, то это значит, что кто-то радикально неправильно что-то спроектировал. dynamic_cast - операция достаточно дорогая, чтобы использовать её таким способом.
Когда у меня стал вопрос приведения указателей на классы, то я прочитал, что dynamic_cast а) работает в run-time б) требует поддержки RTTI, которая не всегда может быть (или может быть выключена) Поэтому я использовал static_cast, т.к. точно знал что там за типы.
Но вопрос даже не в этом. Иде я в том, что в случае Паскаля запись выглядит очень понятно, почти на английском.
Reply
А что касается run-time, rtti и прочего, как ты думаешь, а что использует эта операция в pascal? :)
Reply
Не задумывался. А там это отключается или нет?
Reply
Reply
Leave a comment