#ios #objective-c #refactoring
#iOS #objective-c #рефакторинг
Вопрос:
Я просматриваю старую базу кода и устраняю проблемы, которые возникают при работе со статическим анализатором xCode. Проблема, которая проявляется, заключается в том, что значение никогда не считывается, и в основном то, что происходит в этом методе, заключается в том, что он принимает строку, которая должна быть числом, и преобразует ее в int. Хотя вот строка, о которой идет речь:
if (len50 == CANNOT_CALCULATE)
{
len50 = 0;
strLen50 = @"";
}
Cannot_Calculate — это макрос для определенного int, который означает, что он не был приведен правильно, и есть оператор else, который выполняет работу с int, если оно было приведено правильно. Объекты len50 и strLen50 вообще не используются после этой проверки if, отсюда и причина предупреждения анализатора.
Мой вопрос в том, нужна ли эта строка? Экономит ли установка значения int в 0 или string в пустую строку на памяти? Если это произойдет, то владелец кодовой базы захочет ее ввести, но это не так, тогда я мог бы также избавиться от нее.
Комментарии:
1. что такое
strLen50
bool? Также, если он не может вычислить, тогда исходный кодер хочет иметь значения по умолчанию, такие как0
2.
strLen50
это строка, которую пытались преобразовать. И я бы предположил то же самое в отношении значений по умолчанию, но переменные используются снова перед выходом из области видимости.
Ответ №1:
Это какой-то странный код со всех сторон.
1) Нет, присвоение переменной значения не влияет на память так или иначе. Если значение никогда не будет прочитано, это потраченная впустую строка кода (которую компилятор, скорее всего, все равно оптимизирует).
2) !""
было бы странно устанавливать логическое значение.
Я бы с большим подозрением относился к остальной части кодовой базы, только что прочитав это. (Будучи консультантом во многих проектах, подозреваемый код часто становится образом жизни.)
Комментарии:
1. Спасибо, это то, о чем я думал. Это действительно очень старая кодовая база, и она была разработана в спешке из-за контрактов. Кроме того, я только что заметил свою опечатку, это
@""
не!""
, это строка, а не bool.