Я бы разбил его на два метода. Есть что-то вроде CheckTileExists(x,y)
и GetTile(x,y)
. Первый возвращает логическое значение, которое указывает, есть ли плитка с заданными координатами. Второй метод, по сути, тот, о котором вы говорите в исходном сообщении, за исключением того, что он должен выдавать исключение, когда ему даны недопустимые координаты (поскольку это означает, что вызывающий абонент сначала не вызвал CheckTileExists()
, поэтому это законно исключительная ситуация. Ради скорости вы, вероятно, захотите, чтобы эти два метода совместно использовали кэш, так что в случае, если они вызываются один за другим, накладные расходы на функцию GetTile()
будут незначительными. Я не знаю если у вас уже есть подходящий объект для размещения этих методов или, возможно, вам следует сделать их двумя методами для нового класса. ИМХО, снижение производительности при таком подходе незначительно, а увеличение ясности кода намного превышает его.