Currency
Accounts
Top Ups
Items
Boosting
Gift Cards

24/7 Live Support

English| USD - $
World of WarcraftWorld of WarcraftWorld of WarcraftWorld of WarcraftWorld of WarcraftRocket LeagueRocket LeagueRocket LeagueOSRSOSRSOSRSOSRSXboxXboxXboxPlayStationPlayStationPlayStationForza Horizon 5Forza Horizon 5Epic GamesWarframeWarframeWarframeWarframeElden RingElden RingElden RingTeam Fortress 2Diablo ImmortalTower of FantasyMapleStoryMapleStoryBattlenetDark and DarkerDark and DarkerDark and DarkerDragon Ball LegendsDiablo 4Diablo 4Diablo 4Diablo 4Fate/Grand OrderEpic SevenOne Piece Bounty RushHonkai: Star RailHonkai: Star RailBleach: Brave SoulsHay DayHay DayWorld of Warcraft Mists of PandariaWorld of Warcraft Mists of PandariaWorld of Warcraft Mists of PandariaWorld of Warcraft Mists of PandariaStar CitizenStar CitizenStar CitizenEA Sports FCEA Sports FCEA Sports FCEA Sports FCEA Sports FCGoddess of Victory: NikkeMonster StrikeAnimal Crossing: New HorizonsUma Musume Pretty DerbyHonkai Impact 3rdDragon Ball Z Dokkan BattleFortniteFortniteFortniteFortniteFortniteArknightsThe FinalsLeague of LegendsLeague of LegendsLeague of LegendsLeague of LegendsLeague of LegendsThrone and LibertyThrone and LibertyThrone and LibertyIdentity VMonster Hunter NowSky: Children of the LightYo-kai Watch: Wibble WobbleJujutsu Kaisen Phantom ParadeClash of ClansClash of ClansClash of ClansClash of ClanseFootball 2027eFootball 2027One Piece Treasure CruiseProject SEKAIThe Seven Deadly SinsLast EpochEA Sports FC MobileEscape from TarkovEscape from TarkovEscape from TarkovEscape from TarkovWuthering WavesWuthering WavesMadden NFLZenless Zone ZeroZenless Zone ZeroRunescape MembershipTeamfight TacticsPet Simulator 99Pet Simulator 99Path of ExilePath of ExilePath of ExilePath of ExileCounter-Strike 2Counter-Strike 2Counter-Strike 2Anime DefendersAdopt MeAdopt MeBlox FruitsBlox FruitsBlox FruitsBlade BallBlade BallMurder Mystery 2Murder Mystery 2Roblox LimitedsRoblox RivalsRoblox RivalsWhiteout SurvivalWhiteout SurvivalPokemon Go StardustPUBG MobilePUBG MobilePUBG MobileThe First DescendantAnime VanguardsAnime VanguardsAnime VanguardsPets GoPets GoDeadlockDeadlockMonopoly GoMortal Online 2DiscordDiscordDiscordToilet Tower DefenseFischFischFischFischFallout 76Fallout 76Fallout 76Path of Exile 2Path of Exile 2Path of Exile 2Path of Exile 2Path of Exile 2King LegacyKing LegacyTips JarTorchlight: InfinitePokemon TCG PocketPokemon TCG PocketPokemon TCG PocketMarvel RivalsMarvel RivalsMarvel RivalsBlue Lock: RivalsJujutsu InfiniteJujutsu InfiniteYu-Gi-Oh! Master DuelDelta ForceDelta ForceDelta ForceDelta ForceDelta ForceTwitch DropsJailbreakJailbreakBubble Gum Simulator INFINITYDC Universe OnlineBlack Desert OnlineBlack Desert OnlineBlack Desert OnlineWorld of Tanksmo.coNintendoNintendoGrow a GardenGrow a GardenGrow a GardenSD Gundam G Generation ETERNALCookie Run: KingdomBattlefieldBattlefieldHonor of KingsGTA 5Girls Frontline 2: ExiliumSpotifySpotifyCrunchyrollCrunchyrollTikTokNetflixNetflixAnime Last StandDune: AwakeningDune: AwakeningDead RailsSteal a BrainrotSteal a BrainrotRazerAll Star Tower Defense XAll Star Tower Defense XInk Game99 Nights in the Forest99 Nights in the ForestEtheria: RestartTYPE://SOULGarden Tower DefenseAmazonAmazonOverwatchOverwatchOverwatchEA PlayBlood StrikeBlood StrikeZEPETOPoppo LiveSuper SusAppleBorderlands 4DonutSMPDonutSMPDonutSMPDonutSMPLast War: SurvivalCreatures of SonariaCreatures of SonariaBigo LiveSteam Game AccountsCD KeysBuild a ZooPlants vs BrainrotsSeven Knights Re:BIRTHKaiju No. 8Anime EternalSummoners WarElder Scrolls OnlineElder Scrolls OnlineElder Scrolls OnlineElder Scrolls OnlineBlizzardGoogle PlayTemtemMiliastra WonderlandChaos Zero NightmareFish It!Arc RaidersArc RaidersArc RaidersArc RaidersValorantValorantValorantValorantArena Breakout: InfiniteArena Breakout: InfiniteArena BreakoutArena BreakoutArena BreakoutWhere Winds MeetWhere Winds MeetWhere Winds MeetGrand Piece OnlineWatcher of RealmsPokemon Legends: Z-AThe ForgeThe ForgeApex LegendsApex LegendsApex LegendsWorld of WarshipsMarvel Contest of ChampionsVolleyball LegendsVolleyball LegendsZulaZulaMetin2Metin2Metin2Metin2Wartune UltraUniversal Tower DefenseKnight OnlineKnight OnlineKnight OnlineCar Parking MultiplayerARK: Survival AscendedARK: Survival AscendedStandoff 2Standoff 2Royale OnlineLast Island of SurvivalWolfTeamWolfTeamDarkOrbitAttack on Titan RevolutionAttack on Titan RevolutionMurderers VS Sheriffs DUELSBee Swarm SimulatorBee Swarm SimulatorAnime Fighting Simulator: EndlessHypershotCall of DutyCall of DutyCall of DutyCall of DutyTap SimulatorTap SimulatorEscape Tsunami For BrainrotsEscape Tsunami For BrainrotsDa HoodBleach: Soul ResonanceRise OnlineDevil HunterBaddiesPoint BlankArknights: EndfieldArknights: EndfieldBreak a Lucky BlockNew WorldAion 2Aion 2Silkroad Online TürkiyeHytaleSpongeBob Tower DefenseCatch And TameBlockSpinRustRustRustRustSpin a BaddieTibiaSurvive Lava for BrainrotsCase ParadiseKingshotAbyssKnockoutThe QuinfallYalla LudoSailor PieceSailor PieceBizarre LineageBGMIBGMIDisney+Sniper DuelsChatGPTBloodlinesBloodlinesWar TycoonSwing Obby for BrainrotsGenshin ImpactGenshin ImpactGenshin ImpactThe Seven Deadly Sins OriginThe Seven Deadly Sins OriginFlee the FacilityBloxStrikeBloxStrikeRe:Rangers XBe a Lucky BlockKAIZENSol's RNGBite by Nightbridger: Westernbridger: WesternEVE OnlineEVE OnlineEVE EchoesNeverness to EvernessNeverness to EvernessDragon AdventuresRoyale HighFix It UpAnime Card ClashSummon HeroesA Universal TimeSorcerer Tower DefenseKick a Lucky BlockSlime RNGAlbion OnlineAlbion OnlineAlbion OnlineWelcome to BloxburgThe Division 2The Division 2MLB: The ShowPixel WorldsForza Horizon 6Forza Horizon 6Forza Horizon 6Anime ApocalypseNoob Tower DefenseAnime Warriors 3FareverWizard AlchemySteamSteamSteamSniper ArenaMini WarHugoSMPMortal Kombat MobileHearthstoneCaptain Tsubasa: Dream TeamAFK JourneyBuild a Ring FarmBroken Blade+1 Speed Keyboard EscapeDota 2Dota 2Dota 2Grow a Garden 2Grow a Garden 2Grow a Garden 2Anime Astral SimulatorVV: UltimatumVV: UltimatumAnime SquadronEvomonCollege FootballStorage HuntersSpin a Soccer CardGakuranDriving EmpireDestiny 2Destiny 2Destiny 2Destiny 2Anime ExpeditionsAnime ExpeditionsSpiritValeMistfall HunterMistfall HunterMine a MountainHaze SeasRNG HeroesAnime Card FarmShindo LifeDrag Drive SimulatorCapybaras vs PlantsPlayerUnknown's BattlegroundsPlayerUnknown's BattlegroundsSan Diego Border RoleplayRoll Anime to FightSteal an EggSteal an EggSteal an EggAnime OriginsBedwarsDeepwokenFight in a SchoolKnife DuelsIron Soul: DungeonMurder DuelsGarena Free FireGarena Free FireGarena Free FireGreedy GrowersTower Defense SimulatorMuscle LegendsDeath BallDungeon Quest RebornDungeon Quest RebornFish an Anime RNGRun a RestaurantGreenvilleJujutsu: ZeroGrand BlueDead By DaylightDead By DaylightDead By Daylighthololive DreamsDungeon LootrIdle Mafia GameHalloween: The GameWARDOGSWARDOGSPeroxideAnime DiceThe VeilAniimoAniimoWorld of Warcraft ForeverWorld of Warcraft ForeverRainbow Six Siege XRainbow Six Siege XRainbow Six Siege XLegacy PieceLost ArkLost ArkGuild Wars 2Guild Wars 2Clash RoyaleClash RoyaleClash RoyaleLeague of Legends: Wild RiftLeague of Legends: Wild RiftLeague of Legends: Wild RiftMobile LegendsMobile LegendsMobile LegendsBrawl StarsBrawl StarsBrawl StarsPokemon GoPokemon GoPokemon GoPokemon GoCall of Duty MobileCall of Duty MobileFinal Fantasy XIMinecraftMinecraftMinecraftMinecraftMinecraftOriginUbisoft ConnectSWTORFinal Fantasy XIVRobloxRobloxRobloxRobloxRobloxRobloxRaid: Shadow LegendsLords MobileDayZ8 Ball Pool8 Ball Pool8 Ball PoolDofusWar ThunderWar ThunderSea of ThievesSea of ThievesRuneScape 3RuneScape 3RuneScape 3RuneScape 3WoW ClassicWoW ClassicWoW ClassicWoW ClassicRise of KingdomsDiablo 2: ResurrectedTroveGrowtopiaGrowtopiaGrowtopiaGrowtopia
Home
CSR
Gero programavimo kontrolinis sąrašas

Šis sąrašas padės jums parašyti aukštos kokybės programas

Raphael Finkel, 8/17/2005

Identifikatoriai: įsitikinkite, kad visi jūsų identifikatoriai turi prasmę.

1. Vienos raidės identifikatoriai dažniausiai neturi prasmės.

2. Pavadinimai, tokie kaip flag ir temp retai kada turi prasmę. Vietoje flag, pabandykite Būlio sąlygą, kurią ji tikrina, pavadinti pvz.,valueFound.

3. Apsvarstykite kelių žodžių identifikatorius, tokius kaip nameIndex. Ilgi identifikatoriai (bet ne per ilgi) paprastai yra gerai skaitomi.

Literalai: programoje venkite skaičių, išskyrus 0 ir 1 bei eilučių, išskyrus "", nebent apibrėžiate konstantas.

1. Nenaudokite sveikojo tipo literalo kaip array masyvo (angl. array bound).

2. Nenaudokite sveikojo tipo literalo kaip vykdymo parametro, pavyzdžiui, skirtojo laiko ar prievado numerio.

3. Nenaudokite sveikojo tipo literalų norėdami parinkti meniu elementus.

4. Nenaudokite sveikojo tipo literalo išmatuoti eilutės ar kai kurių duomenų dydžiui; C ir C++ naudokite sizeof() ir strlen(), o Java naudokite .length() ir.size.

5. Nenaudokite sveikojo tipo eilutės failo pavadinimui. Vis dėlto, sveikojo tipo eilutes galite išvesti.

6. Nenaudokite sveikojo tipo literalo norėdami indeksuoti masyvą, kuriame yra įvairiarūšiai duomenys (angl. heterogeneous data).

7. Nerašykite identifikatoriaus pavadinimu, reiškiančiu literalą, pvz., „trisdešimt“.

Moduliarizacija: programa sukurta iš sąveikaujančių komponentų.

1. Nerašykite viso kodo į main() programą (angl. routine).

2. Neapkraukite programų per dideliu darbo krūviu. Jei programa ilgesnė nei 50 eilučių, ji gali būti per ilga.

3. Jei kodą kartojate kelis kartus, pagalvokite, kas geriau veiktų – ar ciklas, ar paprogramė (angl. subroutine).

4. Jei pastebite, kad įtraukos pasidarė labai gilios, tikriausiai nenaudojate paprogramių tada, kada turėtumėte.

5. Iš naujo nekurkite programos bibliotekos (nebent to reikalauja užduotis). Vietoje to, peržvelkite vadovus ir išmokite apie sprintf() ir atoi().

6. Naudokite C ir C++ antraštės failus (antraštės failų pavadinimai baigiasi .h), kad apibrėžtumėte visas konstantas, kurių reikia keliems failams ir sužinotumėte visas paprogrames, eksportuojamas tarp failų. Tačiau nedėkite paprogramių turinio (angl. body) į antraštės failus (išskyrus retas pasitaikančias įterptas paprogrames (angl. inline subroutine).

Formatavimas: jūsų programa turi būti lengvai skaitoma.

1. Aiškių pasiūlymų dėl formatavimo ir kitų pateikimo problemų rasite adresu http://geosoft.no/development/javastyle.html. Ši nuoroda yra skirta „Java“, tačiau taip pat bus naudinga ir kitoms kalboms.

2. Pabandykite apriboti visas eilutes iki 80 simbolių; dėl istorinių priežasčių daugelis žmonių peržiūri kodą 80 stulpelių languose.

3. Įtraukai nenaudokite ir tabuliacijos klavišo ir tarpų, nes ne visos teksto rengyklės tabuliacijos klavišą traktuoja kaip 8 tarpus.

4. Laikykitės nuoseklaus įtraukos modelio, kuris atspindi programos valdymo struktūrą.

5. Venkite pasikartojančių tuščių eilučių savo programoje. Tarp paprogramių pakanka vienos tuščios eilutės.

6. Skirtingos operacinės sistemos eilutes užbaigia skirtingais būdais. Jei persikeliate tarp Win32 (kur naudojama \r\n), Unix (kur naudojama \n) ir MacOS (kur naudojama \r), iš naujo suformatuokite failą, kad galėtumėte naudoti nuoseklų eilutės užbaigimo būdą.

7. Nenustatykite vykdomojo bito (Unix) savo šaltinio failuose.

Kodavimas: jūsų kodavimas turi būti aiškus, lengvai prižiūrimas ir efektyvus, tokia seka. Kai kurios čia pateiktos taisyklės yra konkrečios, kitos – bendros.

1. Nenaudokite if teiginių sekos, kuri neturi else ir turi tik vieną atitikmenį; vietoje to, naudokite else if.

2. Kai norite suskirstyti teksto įvestį į kategorijas, nerašykite pirmųjų galimų simbolių.

3. Kurdami bitų šablonus, vietoje daugybos (angl. miltiplication) naudokite shift operatorių.

4. Visada patikrinkite ar switch teiginyje nėra numatyto teksto. Taip pat if-then-else teiginių sekoje naudokite galutinį else.

5. Visada patikrinkite grįžimo kodą ir naudokite perror(), kad praneštumėte apie trikdį.

6. Būlio vertės visada turėtų naudoti boolean tipą Java, bool C++ ir sveikuosius skaičius 0/1 C. Nenaudokite simbolių t ir f, taip pat nenaudokite -1 ir 1.

7. Jei įmanoma, naudokite ciklus duomenų struktūroms inicijuoti.

8. Kiekvieną kintamąjį ir kiekvieną struktūros lauką naudokite tik vienam tikslui. Neperkraukite jų, nebent tam yra rimta priežastis.

9. Nenaudokite to paties identifikatoriaus tipui, kintamajam ir failo pavadinimui, net jei pakeisite didžiąsias raides. Tai per daug painu.

10. Jei keičiate duomenis naudodami htonl() ar panašią programą, prieš tinklo perdavimą, nekeiskite duomenų. Sukurkite antrą duomenų struktūrą.

11. Stenkitės nenaudoti visuotinių ar nelokalinių (angl. global, nonlocal) kintamųjų. Kiekvieną kintamąjį rašykite mažiausioje apimtyje. Yra teisėtas nelokalinių kintamųjų panaudojimas, tačiau įsitikinkite, kad jums jų tikrai reikia.

12. Shell, Perl ir Python programos turi turėti savo #! eilutę kaip pirmąją failo eilutę, kitu atveju, tokia eilutė yra tik komentaras.

13. Stenkitės vengti koduoti specialius atvejus. Dažnai galite panaudoti pseudoduomenis ar kitus duomenų struktūros metodus, kurie leidžia specialius atvejus paversti į įprastus atvejus.

Kompiliatoriai: leiskite jiems padėti rasti klaidas. Visada iškvieskite kompiliatorius su įjungtais įspėjimais.

1. C ir C++, naudokite -Wall vėliavėlę.

2. Java, naudokite -Xlint:all -deprecation ir pmd programą, kad gautumėte geresnio stiliaus pasiūlymų.

3. Python, naudokite -t -W all.

4. Perl, naudokite -w vėliavėlę ir nurodykite use strict. Cgi-bin skriptai taip pat turėtų turėti -T vėliavėlę.

Gamybos įrankis: naudokite jį, naudokite jį gerai.

1. Gamybos failas visada turi turėti „švarų“ receptą, kuris turėtų pašalinti visus failus, kuriuos galima atkurti pasinaudojus kitais gamybos faile esančiais receptais, įskaitant objektų ir vykdomuosius failus.

2. Jei jūsų projekte yra keli šaltinio failai, jei reikia, gamybos failas turėtų sugeneruoti objekto (.o) failus ir juos susieti.

3. Gamybos failas turi būti parašytas taip, kad jei jį paleisite du kartus iš eilės, antrasis paleidimas dar kartą nekompiliuos.

4. Kiekvienas receptas turi sukurti failą, nurodytą jo taikinyje.

5. Kiekvienas receptas turi naudoti kiekvieną failą, nurodytą jo būtinų sąlygų sąraše.

6. Išmokite naudoti taisykles tokiems tikslams kaip .c.o, kad išvengtumėte pasikartojančių gamybos failų.

7. Jei turite tik vieną C arba C++ šaltinio failą, vykdomasis failas turi turėti tą patį pavadinimą (be plėtinio .c arba.cpp).

8. Būtinai nurodykite visus .h failus kaip būtinas sąlygas ten, kur jų reikia. Apsvarstykite galimybę naudoti makedepend, būtinųjų sąlygų sąrašo sukūrimui.

Dokumentacija: skirta ne tik pažymius rašančiajam. Tai taip pat padės jums rašant programą!

1. Rašydami programą nepamirškite dokumentacijos. Keičiantis dizainui visada galėsite ją modifikuoti.

2. Parašykite išorinę dokumentaciją: kaip sukompiliuoti ir paleisti programą ir ką ji turi daryti? Išorinė dokumentacija paprastai yra atskirame README faile; mažuose projektuose ji gali būti komentaras šaltinio faile.

3. Įtraukite vidinę dokumentaciją: kokius algoritmus ir duomenų struktūras naudojate? Apžvalga gali būti atskirame README faile, tačiau paprastai vidinė dokumentacija pateikiama apie konkrečias procedūras, deklaracijas ir veiksmus, kuriuos ji apibūdina.

4. Patikrinkite visą programą ir dokumentaciją, ar nėra rašybos klaidų. Nemandagu pateikti darbą su rašybos klaidomis ir tai demonstruoja nedėmesingumą detalėms.

5. Patikrinkite visus savo dokumentus (ir išvesties pranešimus), ar nėra gramatikos klaidų.

6. Programos yra daug lengviau skaitomos, jei pateikiate trumpą komentarą skliaustuose. Pvz., skliaustas, uždarantis sąlygą gali turėti tokį komentarą kaip „jei vertė gerai“. Ciklą užbaigiantis skliaustas gali turėti komentarą, pvz., „kiekvienai įvesties eilutei“. Skliaustas, uždarantis procedūrą, gali turėti komentarą, tik įvardijantį procedūrą. Klasę užbaigiantis skliaustas gali turėti komentarą „klasė“ ir klasės pavadinimą.

Original article: https://www.cs.uky.edu/~raphael/checklist.html

PayPalMastercardAMEXDiscoverBitcoinGoogle PayApple Pay+18 more+15 more
English| USD - $
Join us today to level up your gaming experience!
Discord
Add as preferred source on Google
Help Center Contact us About us Careers Bug Bounty Blog Become a Partner Become an Affiliate Become a Seller
Account Warranty TradeShield (Buying) TradeShield (Selling) Withdrawals Account Seller Rules
Seller Rules Changing Username Fees Refund Policy
© 2026. The eldorado.gg website is operated by GWD Processing FZCO. Terms of Service Privacy Policy DMCA DSA