Koda saīsināšana Jānis Rubļevskis (koko) / 10.04.2008. 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:

koko @ 14.04.2008. 09:47

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

Roberts @ 14.04.2008. 09:16

apķērīgs gan tu esi :D

koko @ 14.04.2008. 07:01

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

Roberts @ 13.04.2008. 17:07

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());
}

koko @ 12.04.2008. 15:48

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ā :)

Mārcis Balodis @ 12.04.2008. 05:47

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;

KAC @ 11.04.2008. 06:39

Tavu pēdējo prieku var nosīsināt uz
for ($i = 2; $i <= 6; $i++) print $i;
kas ir uzskatāmāks

extropy @ 11.04.2008. 05:54

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.

iivs @ 10.04.2008. 17:19

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.

@ 10.04.2008. 14:05

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.

mobix @ 10.04.2008. 14:04

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

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


Nu pasāpini mani - tu jau gribi:

* Visi lauki (izņemot tavu lapu) 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.