У меня есть пиксель / местоположение, мы будем называть его 4,4 на графике.
Я пытаюсь реорганизовать функцию, которая проверяет, соответствуют ли пиксели вокруг нее определенным критериям во всех 8 направлениях (по диагонали, по горизонтали и по вертикали), и, если она соответствует этим критериям, предпринимают общее действие, которое имеет возвращаемое значение.
Например:
int weight=0;
if (CheckWeight(new Point(4,4)) == true)
weight +=100;
if (CheckWeight(new Point(4,5)) == true)
weight +=10;
if (CheckWeight(new Point(4,3)) == true)
weight +=10;
if (CheckWeight(new Point(5,5)) == true)
weight +=10;
if (CheckWeight(new Point(3,3)) == true)
weight +=10;
if (CheckWeight(new Point(3,4)) == true)
weight +=10;
if (CheckWeight(new Point(5,4)) == true)
weight +=10;
if (CheckWeight(new Point(5,3)) == true)
weight +=10;
if (CheckWeight(new Point(3,5)) == true)
weight +=10;
Есть ли хороший способ их реорганизовать, так что если мне придется изменить некоторые вещи здесь, такие как функция, которую я вызываю, чтобы проверить вес, или условие, с которым я проверяю, или приращение веса, что я не дублируете мои усилия 8 раз?
У меня были другие программисты, которых я знаю, которые уже предлагают просто объединить их под одну проверку, что я, очевидно, не могу сделать, потому что она может выполнить 3 из этих проверок и дать мне вес 30 на этот раз и 5 из этих проверок и в следующий раз дадим мне вес 50.
Редактировать: Эта процедура будет выполняться на картах пикселей 1920x1080, то есть несколько миллионов раз; производительность может быть реальной проблемой, связанной с рефакторингом.