Kotlin: пометить аргумент функции после его очистки в новую переменную как «больше не использовать это»

Для начала: этот вопрос для меня уже как бы решен. Но дискуссия может быть интересной.

Мне нравится код, поэтому давайте посмотрим на эту функцию:

          fun foo(path: Path) {
        val absPath = path.normalize().absolute() // sanitizing
        doSomethingWith(path) // this is unsafe use because path is not sanitized
        doSomethingWith(absPath) // this is safe because we are using the sanitized absPath value
    }

Параметры функции Kotlin всегдаval, поэтому нам необходимо создать новую переменную, если мы хотим получить ее значение. Мы можем выбрать между использованием нового имени или использованием старого имени и аннотированием его с помощью@Suppress("NAME_SHADOWING")чтобы не получитьName shadowed: ...предупреждение.

Я ищу что-то вроде

          fun foo(path: Path) {
        val absPath = path.normalize().absolute()
        @DoNotUseAnymore path
        doSomethingWith(path) // should give a warning/error
        doSomethingWith(absPath) // is fine
}

Вы знаете что-то подобное? Или вы думаете, что я ошибаюсь на неправильном конце уравнения и должен просто научиться не делать плохих вещей, используя@Suppress-аннотация? Поскольку мне нравится кодировать, я имею в виду следующее:

          fun foo(path: Path) {

        @Suppress("NAME_SHADOWING")
        val path = path.normalize().absolute() // sanitizing

        doSomethingWith(path) // there is only one sanitized variable so we are safe
    }

В некотором смысле этот метод является самым чистым... Я, вероятно, придерживаюсь этого... Должен ли я опубликовать этот вопрос сейчас? Ну, возможно :)

0 ответов

Другие вопросы по тегам