насколько читабельно это
Прежде всего, соглашение об именах: избавьтесь от ненужных / неинформативных частей идентификаторов. Например, параметры не должны начинаться с i_
(предположительно, для обозначения «ввода»?). Здесь нет никакой информации, и это добавляет шум. Это оказывает огромное влияние на удобочитаемость.
Логи c также могут быть обеззаражены. Получаемое предупреждение дает вам подсказку о том, что условие можно упростить - это всегда тот случай, когда ваши условные выражения содержат логические литералы.
Однако, более всего, читаемость выиграет от разбивания выражения над несколько строк.
Я бы также поменял местами два вторичных условия, чтобы вы сначала протестировали текущие символы, а , а затем продолжили повторение (только если два протестированных в данный момент) символы равны!):
private static bool IsPalindrome(string input, int start, int end) {
return (start >= end) ||
input[start] == input[end] &&
IsPalindrome(input, start + 1, end - 1);
}
Этот код основан на правильном приоритете &&
над ||
. Некоторые люди предпочитают явно указывать этот приоритет операторов, используя больше скобок:
private static bool IsPalindrome(string input, int start, int end) {
return (start >= end) ||
(
input[start] == input[end] &&
IsPalindrome(input, start + 1, end - 1)
);
}