Сообщение Re[4]: Спец. символы (операторы) вместо функций - любите? от 16.08.2024 10:31
Изменено 16.08.2024 10:39 Alekzander
Re[4]: Спец. символы (операторы) вместо функций - любите?
Здравствуйте, vsb, Вы писали:
Pzz>>Конкатенация строк.
vsb>На мой взгляд это плохое применение оператора сложения. Из-за него код print("a + b = " + a + b) не будет работать, как ожидается
А что ожидается? Что сложение без скобок будет происходить справа налево? Поднимите руку, у кого ещё такие ожидания.
Но неявные типопреобразования это, конечно, зло. Этот код должен кидать исключение независимо от того, что там — ES objects или Variant. К огромному сожалению, стандартные реализации того и другого этого не делают.
К конкатенациям именно строк через плюс я отношусь нейтрально. Если вырвать ядовитые клыки нестрогой типизации (неявных типопреобразований), такая конкатенация не сможет нанести много вреда. А от её запрета польза тоже неочевидно: дурак всегда сможет вызвать .concatenate() вместо .format().
>Ещё лучше использовать интерполяцию строк: print("a + b = \(a + b)")
Вот интерполяция — это точно то, чем пользоваться в больших проектах ни в коем случае нельзя. Почему? Потому что возникает лишняя связь между текстом и кодом, и текст становится нельзя вынести в ресурсы и отдать пруфридеру/копирайтеру/юзабилисту. К сожалению, всякие %s или {0} или {sum} тоже создают нехорошие связи, но если подставлять выражение, связь возникнет с каждой входящей в него переменной, а это гораздо хуже. Отрефакторишь, поменяешь a на o, и приплыли.
Pzz>>Конкатенация строк.
vsb>На мой взгляд это плохое применение оператора сложения. Из-за него код print("a + b = " + a + b) не будет работать, как ожидается
А что ожидается? Что сложение без скобок будет происходить справа налево? Поднимите руку, у кого ещё такие ожидания.
Но неявные типопреобразования это, конечно, зло. Этот код должен кидать исключение независимо от того, что там — ES objects или Variant. К огромному сожалению, стандартные реализации того и другого этого не делают.
К конкатенациям именно строк через плюс я отношусь нейтрально. Если вырвать ядовитые клыки нестрогой типизации (неявных типопреобразований), такая конкатенация не сможет нанести много вреда. А от её запрета польза тоже неочевидно: дурак всегда сможет вызвать .concatenate() вместо .format().
>Ещё лучше использовать интерполяцию строк: print("a + b = \(a + b)")
Вот интерполяция — это точно то, чем пользоваться в больших проектах ни в коем случае нельзя. Почему? Потому что возникает лишняя связь между текстом и кодом, и текст становится нельзя вынести в ресурсы и отдать пруфридеру/копирайтеру/юзабилисту. К сожалению, всякие %s или {0} или {sum} тоже создают нехорошие связи, но если подставлять выражение, связь возникнет с каждой входящей в него переменной, а это гораздо хуже. Отрефакторишь, поменяешь a на o, и приплыли.
Re[4]: Спец. символы (операторы) вместо функций - любите?
Здравствуйте, vsb, Вы писали:
Pzz>>Конкатенация строк.
vsb>На мой взгляд это плохое применение оператора сложения. Из-за него код print("a + b = " + a + b) не будет работать, как ожидается
А что ожидается? Что сложение без скобок будет происходить справа налево? Поднимите руку, у кого ещё такие ожидания.
Но неявные типопреобразования это, конечно, зло. Этот код должен кидать исключение независимо от того, что там — ES object или Variant. К огромному сожалению, стандартные реализации того и другого этого не делают.
К конкатенациям именно строк через плюс я отношусь нейтрально. Если вырвать ядовитые клыки нестрогой типизации (неявных типопреобразований), такая конкатенация не сможет нанести много вреда. А от её запрета польза тоже неочевидно: дурак всегда сможет вызвать .concatenate() вместо .format().
>Ещё лучше использовать интерполяцию строк: print("a + b = \(a + b)")
Вот интерполяция — это точно то, чем пользоваться в больших проектах ни в коем случае нельзя. Почему? Потому что возникает лишняя связь между текстом и кодом, и текст становится нельзя вынести в ресурсы и отдать пруфридеру/копирайтеру/юзабилисту. К сожалению, всякие %s или {0} или {sum} тоже создают нехорошие связи, но если подставлять выражение, связь возникнет с каждой входящей в него переменной, а это гораздо хуже. Отрефакторишь, поменяешь a на o, и приплыли.
Pzz>>Конкатенация строк.
vsb>На мой взгляд это плохое применение оператора сложения. Из-за него код print("a + b = " + a + b) не будет работать, как ожидается
А что ожидается? Что сложение без скобок будет происходить справа налево? Поднимите руку, у кого ещё такие ожидания.
Но неявные типопреобразования это, конечно, зло. Этот код должен кидать исключение независимо от того, что там — ES object или Variant. К огромному сожалению, стандартные реализации того и другого этого не делают.
К конкатенациям именно строк через плюс я отношусь нейтрально. Если вырвать ядовитые клыки нестрогой типизации (неявных типопреобразований), такая конкатенация не сможет нанести много вреда. А от её запрета польза тоже неочевидно: дурак всегда сможет вызвать .concatenate() вместо .format().
>Ещё лучше использовать интерполяцию строк: print("a + b = \(a + b)")
Вот интерполяция — это точно то, чем пользоваться в больших проектах ни в коем случае нельзя. Почему? Потому что возникает лишняя связь между текстом и кодом, и текст становится нельзя вынести в ресурсы и отдать пруфридеру/копирайтеру/юзабилисту. К сожалению, всякие %s или {0} или {sum} тоже создают нехорошие связи, но если подставлять выражение, связь возникнет с каждой входящей в него переменной, а это гораздо хуже. Отрефакторишь, поменяешь a на o, и приплыли.