Benaderingen te Deprecating Code in JavaScript

0
60

Onlangs had ik te graven in het onderwerp van de code afschrijvingen in JavaScript. Ik heb het gevoel alsof dit onderwerp krijgt minder aandacht, ook al kan een belangrijke rol spelen in bepaalde projecten, vooral bij het werken in grotere teams of omgang met externe Api ‘ s.

In JavaScript-land, ik weet niet van een ware industrie normen voor deprecating JavaScript. Het kan verschillen per team, de bibliotheek of de leverancier.

Daarom is mijn doel hier is om te vatten wat mijn bevindingen en gedachten over dit onderwerp, samen met enkele goede praktijken bij het markeren van een JavaScript-methode een verouderde browser.

Wat betekent “afschrijvingen” eigenlijk?

Eerste, laten we beginnen door te verduidelijken dat de afschrijving is slechts een status die is toegepast op een voor de functie voor software. Het geeft aan dat deze functie moet worden vermeden, meestal omdat deze is vervangen.

Veroudering kan ook aangeven dat de functie zal verwijderd worden in de toekomst. Functies zijn niet meer in gebruik—in plaats van onmiddellijk verwijderd—om te zorgen voor compatibiliteit, en programmeurs die gebruik hebben gemaakt van de functie is het tijd om hun code in overeenstemming met de nieuwe standaard.

Bovendien, een afgeschafte functie suggereert dat er niet zal worden bij de verdere ontwikkeling van dit punt hoger. Het mag niet anders dan in een vorige versie (tenzij documentatie uitdrukkelijk iets anders). Dus, over het algemeen, het moet hetzelfde zijn als toen de afschrijvingen actie gebeurd.

Het kan wel of niet werken in de nieuwste versie geen garanties!

Echter, omdat er geen ware industrie normen die strikt gevolgd inJavaScript-land, dit kan iets afwijken per team, de bibliotheek of de leverancier.

Wanneer afkeuren code en wanneer om het te verwijderen?

Het is belangrijk op te merken dat een niet meer in gebruik voor de functie voor software of methode is nog steeds een deel van de software! De “afgeschafte” label als slechts de status van de code. Of de software die functie daadwerkelijk worden verwijderd in de toekomst is afhankelijk van wat de specifieke software team beslist.

In mijn mening, een grote teams of projecten een beroep op externe Api ‘ s of bibliotheken moeten afkeuren eerste, verwijder dan later (na een redelijke tijd, maar u aangeven dat). Op zijn minst, op zijn minst een grote versie bult vóór het daadwerkelijk verwijderen van de verouderde code dus gebruikers hebben een kans om te wennen aan de verandering.

Je zou willen kijken op Semantische Versiebeheer, een eenvoudige set van regels en voorschriften die bepalen hoe de versie nummers zijn toegewezen en verhoogd. Gegeven een versie nummer.MINOR.PATCH, waarmee de ‘GROTE’ versie wanneer u onverenigbaar API veranderingen, KLEINE versie bij het toevoegen van functionaliteit in een achterwaarts compatibel wijze, en PATCH versie wanneer u backwards-compatible bug fixes.

Als de software is snel veranderende en evoluerende en u deprecating een functie probeert te communiceren met uw project manager als deze functie wordt verwacht te worden opgewekt later. Als u ervoor kiest om te vervallen, in plaats van te verwijderen, is het misschien een stuk makkelijker voor je om terug te keren moet je nodig hebt om.

Voor kleinere teams of projecten met interne methoden en Api ‘ s, ga je gang en verwijder eerste plaats afkeuren. Soms is het gewoon geen zin om tijd te verspillen en afschrijvingen alleen neemt de complexiteit alleen maar omwille van de volgende best practices.

Het markeren van een methode achterhaald

Hier zijn vijf good practices ik heb het meest nuttig:

  1. Voeg een @afgeschaft JSDoc vlag.
  2. Vermelding van de versie van de methode was verouderd.
  3. Figuur uit een tijd als deze methode zal worden verwijderd, met inbegrip van die versie zal plaatsvinden. Anders, gebaseerd op mijn ervaring, het blijft altijd 🙂
  4. Gebruik commentaar op de lippen te leggen op de uitvoering ten behoeve van andere ontwikkelaars of je toekomstige zelf. Dit is erg handig als je use-case is het schrijven van een bibliotheek die anderen gebruiken als een afhankelijkheid van hun werk.
  5. Voeg een console waarschuwing geeft aan dat de functie is afgeschaft.

Hier is een meer praktisch voorbeeld waar ik gebruik van alle vijf praktijken:

/**
* Een magische methode die veelvouden cijfers.
*
* @afgeschaft [#1] sinds versie 2.3 [#2].
* [#3] Zullen worden verwijderd in versie 3.0.

* [#4] In het geval u moet vergelijkbaar gedrag, uitvoering van het op je eigen,
* bij voorkeur in vanilla JavaScript
* of gebruik de multiplyTheSameNumber methode in plaats daarvan,
* als hetzelfde nummer moet worden vermenigvuldigd meerdere keren, zoals:
* multiplyDigits([5, 5, 5]) === multiplyTheSameNumber(5, 3)
*
* @param {array} _digits – cijfers te vermenigvuldigen
*/
functie multiplyDigits(_digits) {
console.waarschuwen(“het Aanroepen van een methode depricated!”); // [#5]

// ….
}

Om herhaling te voorkomen in de console waarschuwingen of in het geval u van plan bent om het verwijderen van meerdere methoden en u hebt hun vervangers, is het misschien handiger om gebruik van een helper:

/**
* Het creëren van een verouderd / verouderde gedrag voor de methoden in een bibliotheek.
* [Credits]{@link: https://stackoverflow.com/q/21726472/1333836}
*
* @param {functie} replacementFunction
* @param {string} oldFnName
* @param {string} newFnName
* @return {functie}
*/
const Oboslete = function(replacementFunction, oldFnName, newFnName) {
const wrapper = function() {
console.waarschuwen(“WAARSCHUWING! Verouderde functie genoemd. Functie ‘” + oldFnName + “‘ is verouderd, gebruik dan de nieuwe ‘” + newFnName + “‘ – functie voor in de plaats!”);

replacementFunction.van toepassing(dit, arguments);
}
wrapper.prototype = replacementFunction.prototype;

terug wrapper;
}

Inpakken

Ik stel voor het krijgen van uw team op dezelfde pagina en erven afschrijvingen praktijken die het meest zinvol zijn voor uw project of use case, of het nu om de praktijken die we hebben besproken hier of anderen.

Er zijn tijden wanneer verwijdering heeft meer zin dan de afschrijvingen. Soms investeren inspanningen te vervallen iets gewoon niet waard. Nogmaals, het is helemaal aan jou en wat het meest zinvol is voor uw project.

Kent u andere goede praktijken bij het markeren van een methode achterhaald in JavaScript? Laat het me weten in de comments!

Credits

De ideeën die ik heb gedeeld hier werden geïnspireerd door de opmerkingen die ik heb gevonden op Software Engineering Stack Exchange en op StackOverflow.