Koda saīsināšana

Jānis Rubļevskis (koko) // 2008. gada 10. aprīlī, 14:57 // #Datori // 11 komentāri 

Es jau diezgan ilgi programmēju (kodēju jau noteikti jāsaka) PHP programmēšanas valodā, kuru noteikti visi zina un visi māk - sintakse salikta kopā no kaut kādiem perliem, c, un vēlnezkautkā utt... Lab, lab - vēsturi zinu, bet nav par to.

Programmēšanas procesu vienmēr girbēs nedaudz saīsināt ne tikai nekomentējot kodu, bet arī maksimāli saīsinot, kas nav pareizākais variants, jo parseris vienalga to kodu interpretē sākumā pa savam, bet koda lasāmība tikai pasliktinās, toties man tāda kaite ir un tur es neko nepadarīšu. Tāpēc padalīšos ar 2 lietām, kas varbūt jauniņajiem nav zināmas.

1) if, esle, esleif saīsināšana. if ($nigga==='white') {
  echo 'that is not nigga!';
} elseif ($nigga==='yellow') {
  echo 'That is indian';
} else {
  echo 'It is nigga!';}
Pirmais saīsināšanas veids ir tāds: ja if vai elseif, vai else blokos ir tikai viena darbība, tad figūriekavas "{", "}" bloku atvēršanai un azivēršanai nav nepieciešamas:if ($nigga==='white')
  echo 'that is not nigga!';
elseif ($nigga==='yellow')
  echo 'That is indian';
else
  echo 'It is nigga!';
Un tagad mans mīļākais pieraksts:echo $nigga==='white' ? 'that is not nigga!' : ($nigga==='yellow' ? 'That is indian' : 'It is nigga!');

2) Jūsu priekam piedāvāju arī kaut ko tādu, ko atklāju tikai šodien: $j = 1;
for ($i = 0; $i<=10; $i += $j) {
  $j++;
  print $j;
}
Var mierīgi saīsināt uz:for ($i = 0, $j = 1; $i <= 10; $i +=$j, print ++$j);Par ++ operatora pirmsinkrementēšanos un pēcinkrementēšanos es jau sen zināju, bet par for cikla saīsināšanu nebiju nojautis. Tā ir, ka tādām itkā pašsaprotamām struktūrām specifikāciju nekad neviens nelasa :D

Ceru, ka jūs saīsinājumus nelietosiet un rakstīsiet ļoti labu dokumentāciju.

Komentāri

Hehe, par to for saīsināšanu nebiju ieskatījies :D

Bet vispār man nav tāda slimība kā Tev :P

Dīvaini, ka tu to sauc par "saīsināšanu".

Parasti jau vairums coding-gaidlainos ir teikts, ka nedrīkst izlaist figūriekavas if/for/while konstrukcijām arī ja pat tajos ir tikai viena rindiņa. Jo vēlāk kāds aizmirsīs tās pielikt, bet pierakstīts otro rindiņu, tādējādi radot bugu.

2) punktā $j=1 un $j++ ienešana tā for iekavās ir ļoti normāla padarīšana. C valodā tā bieži vien raksta.

Protams gan to print konstrukciju likt iekš iekavām gan ir slimīgi.

tas peedeejais man patika, nebiju iedomaajies for ciklaa iekavaas iebaazt print. Anonīms, nav taisniiba, ka nedriixt. Driixt visu ko. Tik un taa, ja viena rindinja, tad iekavas ir labaak likt, un turklaat oficiaali pareizi skaitas iekavu likt apaxhaa nevis blakaam.

Nu es negribu būt tas kuram šādā saīsinātā kodā pēc tam būtu jāmeklē kļūdas.

Bet nu katrs pats savas bedres racējs.

Tavu pēdējo prieku var nosīsināt uz

for ($i = 2; $i <= 6; $i++) print $i;

kas ir uzskatāmāks

Nu par otro punktu - neesi kārtīgi lasījis manuāli, ja tikai tagad atklāj :)

Es atkal noskatījos no wordpress dzinēja un pārgāju uz:

if (bla = 1):

else :

endif;

Man jau tas ar endif galā kaut kā nepatīk, jo lielākā daļa php kodē standartvariantā un, ja parādās vairākas notācijas, tad paliek nelasāmi.

Vēl man visiem jāatgādina viena rinda no mana teksta: "bet koda lasāmība tikai pasliktinās". Laikam bija jāieliek tas viss boldā :)

Labrīt :) principā var jau tā saīsināt, bet diezgan nederīgi tas ir (vismaz tavā piemērā).

Izmantojot for ciklu var diezgan eleganti iterēt pār kolekciju (gan jau ka pē-hā-pē tādas ir :))

for (Iterator iter = myList.iterator(); iter.hasNext();) { System.out.println(iter.next());

}

Mēs runājam dažādās valodās :D Es runāju PHP, bet, kā izskatās, tad Tu runā Javā :D

apķērīgs gan tu esi :D

Nu, tas, ka Java nekodēju, nenozīmē, ka neesmu nemaz jamo pētījis ;)

Paud savu subjektīvo viedokli:

Visi lauki (izņemot interneta vietni) aizpildāmi obligāti!
E-pasts publiski netiks parādīts.
Zinot vairākumu, komentāros tagi netiek atrādīti kā tagi. Linki automātiski pārveidosies par spiežamiem (cerams).
Bloga īpašnieks patur tiesības ļaunus komentārus dzēst vai pārveidot cilvēkiem patīkamākā formā, bet tajā pašā laikā neatbild par komentāru saturu.