Vraag Hoe uitbreidbaar moet code eigenlijk zijn? [Gesloten]


Ik ben net met een nieuwe baan begonnen en een van de dingen waar mijn nieuwe baas tegen mij over sprak, was de levensduur van de code.

Ik heb altijd gecodeerd om mijn code oneindig uitbreidbaar en aanpasbaar te maken. Ik dacht dat als iemand in de toekomst mijn code zou veranderen, het eenvoudig zou moeten zijn.

Maar ik had nooit echt een duidelijk idee over hoe ver in de toekomst dat zou moeten zijn.

Dus mijn nieuwe baas zei me dat ik me niet meer moest bezighouden met coderen voor meer dan 3 jaar in de toekomst en zijn redenering was dat technologie verandert, programma's vervallen etc.

In het begin was ik een beetje overrompeld en dacht dat hij een klus klus was, maar hoe langer ik erover nadenk, hoe meer ik aan het verwarmen ben.

Heeft iemand anders een mening over hoe ver je in de toekomst zou moeten coderen?


16
2018-05-24 10:57


oorsprong


antwoorden:


U moet de specificaties coderen, niets meer en niets minder. Als de specificaties 30 jaar geldig zijn, codeer je voor 30 jaar. Als de specificatie bepalingen voor 3 maanden geeft, is hetzelfde van toepassing.

Bedenk echter dat je ook moet coderen voor je eigen gezond verstand. Alle code die u maakt zou 3 dingen moeten bereiken:

  • Code moet vervangbaar zijn - Dit is naar mijn mening gewoon een goede gewoonte. Hoe meer vervangbaar u bent in uw codering, hoe beter de code die u produceert. Dit levert een beetje een omgekeerde situatie op - hoe meer vervangbaar je code maakt, des te waardevoller je jezelf maakt.

  • Code om productief te zijn - Hergebruik, hergebruik, hergebruik.

  • Code moet goed geschreven zijn - Dit ik niet moet worden uitgelegd.

7
2018-05-24 11:01



Een van de moeilijkste dingen om te bereiken is hoe uitbreidbaar te zijn. Als baas ben ik echt geïrriteerd als ik iemand een taak van 2 uur toewijs en drie dagen later werk ik er nog steeds aan, omdat ze besloten dat het meer uitbreidbaar moest zijn, dus voegden ze vermeldingen toe aan het configuratiebestand en kolommen aan tabellen en hadden ze om 4 of 5 andere objecten te veranderen om dat te accommoderen en nu is het install-document verouderd en moet het deploy-script veranderen en moet de tester een dag of twee proberen alle combinaties en permutaties zodat we kunnen weten dat die code zelfs werken. Maar ik ben ook erg geïrriteerd wanneer iemand anders die taak van twee uur omvormt tot een taak van een half uur door alles hard te coderen, zelfs het e-mailadres waarnaar het stuurt, en begrijpt niet wanneer de rest van het team klaagt.

Als er een eenvoudige, vaste regel zou zijn, zou iedereen een senior programmeur kunnen zijn op de dag dat ze voor het eerst een code zouden compileren. Het vergt ervaring en oordeel en het is waarschijnlijk het belangrijkste oordeel dat u zult krijgen. En je weet hoe je een goed oordeel krijgt? Ervaring. En je weet hoe je ervaring opdoet? Slecht oordeel.


20
2018-05-24 15:31



als jij werkelijk wil een langdurig programma, schiet om ervoor te zorgen dat je dates het verleden aankunnen 2038 (dat is de volgende "Y2K").

Data opzij, hoe codeer je nu precies over een jaar vanaf nu, in plaats van over tien jaar? U schrijft onderhoudbare code of u niet; u kunt niet precies aangeven hoe lang het duurt voordat uw wijziging "verloopt".

Ik veronderstel dat je zou kunnen beweren dat de volgende standaard van hun taal de methode zal afwijzen Foo, maar als een methode niet meer wordt gebruikt, is dat eigenlijk meer een kwestie van codekwaliteit en onderhoudbaarheid dan dat het codeert voor toekomstige data.


4
2018-05-24 11:01



Codeer goed en kijk alleen naar het volgende product. Goed geschreven code is oneindig refactoreus / uitbreidbaar, al dan niet geschreven in deze geest. Slecht geschreven code die zelden uitbreidbaar is, is in de praktijk.


1
2018-05-24 11:00



Wanneer ik iets codeer, vraag ik mezelf af ...

Is het nodig? Als je het niet nodig hebt, waarom codeer je het dan?

Ik merk dat het me ervan weerhoudt onnodige code toe te voegen. Onnodige code is een drain. Het kost tijd om andere activiteiten te ontlopen. Het draagt ​​bij aan de codegrootte en complexiteit. Het voegt $ $ toe aan het project - vooral als de codebasis een certificeringsproces moet doorlopen.


1
2018-05-24 15:24



Als je Agile methodologieën naar de letter volgt, zou je gewoon moeten coderen voor het huidige probleem. Dit staat ook wel bekend als het YAGNI-principe (You Can not Gonna Need It).

Het idee is dat je niet weet wat er in de buurt komt, dus het heeft geen zin om te proberen te coderen.

Ik denk echter niet dat dit een bijzonder verstandige aanpak is.

Zelfs als je in een Agile omgeving bent, heb je een idee van wat je wilt dat de code in staat is om meerdere iteraties in de rij te doen en daarom zou daar code aan moeten worden gegeven.

Hoewel programma's verlopen en technologieën veranderen als je die 'moordenaar'-app schrijft, duurt het nog veel langer dan drie jaar.


1
2018-05-24 11:02



Houd bij het ontwerpen van uw code rekening met mogelijke manieren waarop deze kan worden uitgebreid of er kan nieuwe functionaliteit van worden verlangd, en u moet ernaar streven deze voldoende modulair te maken zodat het toevoegen van nieuwe functionaliteit mogelijk is. Als er een moment is waarop een beslissing het flexibeler of uitbreidbaarder maakt, terwijl een andere beslissing het meer rigide maakt, als er weinig tot geen kosten aan verbonden zijn om flexibeler te zijn, dan is het logisch daarmee te handelen. Echter, als de kosten van de meer flexibele route aanzienlijk zijn, doe het dan niet. Tenzij u zeker weet dat u die functie nodig heeft en dat de kosten gerechtvaardigd zijn, moet u niet gek worden als u probeert dergelijke functionaliteit toe te voegen; als je dat doet, besteed je waarschijnlijk veel voor niets.


0
2018-05-24 11:09