[offtop]С трудом подбираю нужные слова, чтобы не сорваться на мат.[/offtop]
Суть проблемы: излишние проверки в коде.
Пример:
SomeClass::someMethod();
ArrayType array;
ArrayElement element;
int i, j;
if( (array.width() > i) && (array.height() > j)
{
element = array.element(i, j);
}
//...
Element ArrayType::element( int i, int j)
{
Element element;
if(( width() > i) && (height() > j))
{
element = m_data[i*height() + j];
}
return element;
}
Привер значительно упрощен.
В реальном коде данные путешествуют по методам и в каждом втором проверяется их валидность.
Итак, вопрос, как избавится от различных проверок данных на валидность, если они следуют через длинные цепочки методов.
Есть ли какая-то методология, паттерны, общепринятые практики?
P.S. По многочисленным просьбам радиослушателей:
class Element
{
public:
Element():pointer(NULL){}
void* pointer;
}