Vananenud lahenduste märkimine Kotlinis

Joel Edenberg

Vahepeal selgub uus ja parem viis kuidas, mingeid probleeme lahendada. Peale uue lahenduse realiseerimist saab selle küll kohe kasutsuel võta, aga tekkib küsimus, et mida teha kohe kõigi teiste kohtadega, mis kasutavad eelmist ja nüüdseks aegunud lahendust. Üks variant on võtta aega ja uuendada kohe kõik vana lahendusega kohad. Kuid alati ei ole see võimalik või mõistlik. Sellisel juhul aga jääb oht, et tulevikus võib keegi vana lahendust uuesti kopeerida ja nii jäävadki kõrvuti eksisteerima nii uus, kui ka vana lahendus. Võib isegi muutuda segaseks, et millist varianti siis õigem oleks kasutada edaspidi.

Üks võimalus segaduse vältimiseks on kasutada @Deprecated annotatsiooni (dokumentatsioon). Märkides klassi väljad või meetodid, mida ei tohiks enam kasutada on lihtne dokumenteerida, et miks eelnev lahendus on aegunud ja viida kohe ka uuenenud lahendusele. Defineerides lisaks replaceWith parameetris asenduse definitsioon, suudab näiteks IntelliJ hiljem automaatselt ka vana versiooni kohe asendada uuega. Näide:

@Deprecated(
    level = DeprecationLevel.WARNING,
    message = "New better way of doing it via StringUtils",
    replaceWith = ReplaceWith(
        expression = "StringUtils.isBlank(input)",
        imports = ["org.apache.commons.lang3.StringUtils"]
    )
)
fun isEmpty(input: String?): Boolean {
    return input == null || input.isEmpty()
}