Pereiti prie turinio

Rekomenduojami pranešimai

http://en.wikipedia....iki/Hard_coding

Čia kaip parašyta, tai duomenys kode, vartotojas jokių parametrų neįvedinėja.

 

Įsivaizduok:

- Tarkim yra html'as ir jame php funkcija ir/ar javaskriptas ištraukiantis iš duomenų bazės duomenis ir juos atvaizduojantis puslapyje. - čia skaitosi dar tas normalus būdas, kaip daug kas daro.

- Ir yra kitas variantas - tas pats html'as, bet duomenys surašyti iškart į jį, t.y. nėra jokių funkcijų ar kreipinių į duomenų bazę, niekas nereguoja į vartotojo input, duomenų kiekis ir patys duomenys fiksuoti, nes VISKAS į tą html sukoduota RANKA - čia skaitosi hard-coded.

 

Tai spėju hardcoding tai tiesiog taip daryti, veiksmas pats

 

PS. Gali būti, kad dėl kokių nors detalių ir klystu, tai nepasitikėk pilnai :D

Redagavo k163
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nukrypot truputi i pievas, pradzia buv teisinga.

Jei yra programa, tai keciantis serveriui turetu egzistuoti nustatymu failas kuri paredagavus nieko daugiau nereiktu daryti, ar nustatymai faile ar duomenu bazeje vienoje lenteleje, tai neesme , svarbiausiai kad jie nebutu kietai irasyti i scriptus.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Not sure if this is a serious question, bet atsakysiu. Galima šiek tiek ir pafilosofuoti apie tai, bet per daug nesigilinant, tai yra kažkokio parametro įrašymas tiesiai į kodą. Tam priešingybė būtų to parametro ištraukimas iš DB (ar kokio config failo) arba jei jį įveda user'is. Pavyzdžiui, tai gali būti bet koks tekstas išvedamas vartotojui, dropdown pasirinkimai, masyvo dydis, maksimalus skaičius vartotojų, kuri palaiko sistema, file path, maksimalus uploadinam'o failo dydis ir t.t. Labai daug ko galima prigalvoti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

hardcodint kartais tenka, kai yra kažkokia nedidelė klaida, ir hardcodinanat ją trunka pataisyt daug greičiau, nei perrašyt visą funkcionalumo modulį (užtenka kode pakeisti, pora kintamujų ar eilučių ir viskas, nereikia iš esmės perdaryti visko). Bet kai prisihardocinsi daug, pats pasiklysi tarp kodo, bus didžiulė betvarkė, o kitiems programuotojam suprasti tavo kodą bus be galo sunku. Reikia vengti tokio dalyko, čia dažniausiai iš patirties galiu pasakyti tenka hardcodint kai darbdavys spaudžia, kad greičiau reikia padaryti, nes jam svarbu 'vaizdas'

Redagavo babunas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

hardcodint kartais tenka, kai yra kažkokia nedidelė klaida, ir hardcodinanat ją trunka pataisyt daug greičiau, nei perrašyt visą funkcionalumo modulį (užtenka kode pakeisti, pora kintamujų ar eilučių ir viskas, nereikia iš esmės perdaryti visko). Bet kai prisihardocinsi daug, pats pasiklysi tarp kodo, bus didžiulė betvarkė, o kitiems programuotojam suprasti tavo kodą bus be galo sunku. Reikia vengti tokio dalyko, čia dažniausiai iš patirties galiu pasakyti tenka hardcodint kai darbdavys spaudžia, kad greičiau reikia padaryti, nes jam svarbu 'vaizdas'

Kai darbdavys spaudžia reik keist darbdavį arba pastatyt darbdavį į vietą, o ne daryt belekaip ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Hardcode'inimas būtų kažkokių konstantų įterpimas tiesiai į tą vietą, kuriame ir reikia panaudoti tą konstantą. Konstantomis šiuo atveju laikau ne kintamąjį, kuriam uždėtas const ar final, o pati reikšmė. Pavyzdžiui, jei konfigūruoji saityno serverį, tai gali rašyti taip:

 

Server s = new Server("example.com", 80, 1000);
/*
...
*/
Client s = new Client("example.com");

 

Šiuo atveju trys konstantos yra į'hardcode'intos: "example.com", 80 ir 1000. Kur kas gražesnis spredimas būtų daryti taip:

 

final String host = "example.com";
final int port = 80;
final int timeout = 1000;

Server s = new Server(host, port, timeout);
/*
...
*/
Client s = new Client(host);

 

Arba dar geriau – iškelti šiuos duomenis į konfigūracinį failą:

Config conf = Config.load();
final String host = conf.getString("server.host");
final int port = conf.getInt("server.port");
final int timeout = conf.geInt("server.timeout");

 

Ką iš to išlošiam?

  • Kur kas lengviau suprasti, kas vyksta kode. Turint Server s = new Server("example.com", 80, 1000); nelabai aišku, ką reiškia, tie tu skaičiai. Tačiau paėmus Server s = new Server(host, port, timeout); viskas kur kas aiškiau;
  • Visas konfigūravimas vienoje vietoje. Pavyzdžiui, jei turi konfigūracinį failą, jį tiesiog atsidarai ir paredaguoji – nereikia knistis per kodą ir ieškoti, kurioje vietoje saugomas host'as ar port'as;
  • Išvengiama atvejo, kai konstantą pakeiti tik vienoje vietoje, o kitur ji lieka sena. Pavyzdžiui, gali būti toks atvejis, kad vienoje vietoje pakeiti konstantą (Server s = new Server("another-example.com", 80, 1000);), o kitoje – ne (Client s = new Client("example.com");). Kai turi tam paskirtą kintąmąjį – gali nesijaudinti, kad ne visur pakeitei;

 

Paprastos taisyklės, ko nereikėtų daryti:

  1. Negali būti jokių magic numbers (visi skaičiai, išskyrus 0 ir 1). Būtent 0 ir 1 galima įrašyti kode nesukūrus kintamojo (jeigu aišku, ką tas skaičius reiškia), o kitiems reikia kintamojo:
    // negerai
    for (int i = 0; i < 9; i++) { ... } 
    
    // gerai
    int arrayLength = 9;
    for (int i = 0; i < arrayLength; i++) { ... }
    


  2. Simbolių eilutės – galimas tuščias string'as "", kitų reikėtų vengti;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...