Pâine de cicluri de programatori

Nu luați acest text prea în serios. În el există o anumită cantitate de delir


În programarea modernă, înțelegerea codului este mult mai importantă decât viteza. Metodele ar trebui să facă doar misiunea lor și să nu se angajeze în activități amatorii. În plus, funcțiile fără efecte secundare sunt considerate bune. acest lucru permite o optimizare mult mai bună a programelor pentru procesarea cu mai multe fire. De aceea, acum, programarea funcțională devine foarte populară, chiar penetrând limbile obișnuite.

Să ne gândim, unde, în această frumoasă lume armonioasă, locul la cicluri? Și nu există niciun loc! Nu aveți nevoie de cicluri în timpul muncii zilnice. Ele pot fi ascunse undeva în interiorul bibliotecilor sau, în general, numai la nivel de compilatoare. Fără ele, puteți face complet fără, există înlocuitori frumosi pentru tot. Să enumerăm ce sunt folosite ciclurile:

transformare

O sarcină tipică: să iei din listă obiectele "Utilizator" numai numele și să lucrezi cu el mai departe. Există abstracții bine formate, de exemplu harta în jQuery sau Select în .NET. Sunt de acord că al doilea exemplu de cod pare mult mai clar decât primul, deoarece nu există nici un cod auxiliar suplimentar:

filtrare

Este, de asemenea, o sarcină comună. Selectați toți utilizatorii activi. Aici filtrele standard filtrate și Unde:

agregare

Unde fără ea! De exemplu, trebuie să calculam numărul de utilizatori (da, în prezent nu avem o funcție încorporată):
Și în stilul normal (în general), puteți face acest lucru într-un fel, prin intermediul bateriei:

În acest caz, rezultatul este transmis undeva în continuare, obiectul principal nu este transformat în nici un fel. Aici suntem ajutați fiecare în jQuery și ForEach în .NET. De exemplu, dorim să afișăm numele de utilizator pe consola:

Și toți împreună

Și, desigur, ciclurile sunt folosite simultan pentru toate problemele împreună, chiar și codul de mai confuz și substitut pentru punerea în aplicare a sarcinilor de punere în aplicare detalii inutile (care, într-adevăr, nimeni nu a avut vreodata nevoie și împiedică numai citirea în continuare a codului).

Deci, alegeți numele utilizatorilor activi și găsiți cel mai lung:


Sunt de acord, a doua opțiune este mult mai clară și mai scurtă. De îndată ce textul este clar că el (și eu încă nu folosesc gata făcute de Max). În primul caz, cel mai simplu mod de a ghici care face ca numele de cod pentru o variabilă, dar este, în acest caz test simplu. Dar în viața reală tot mai confuz, deoarece nabegut în mod necesar SEO și ciclul se va transforma într-o versiune mai scurtă și mai simplă, care este de înțeles (ca și în cazul în care), ci ca urmare a tuturor logicii bătute în cuie și schimbarea ei devine mai dificilă, cuplat cu o rescriere aproape completă bucata de cod:

În sfârșit

Pentru a nu se referi la exemplele elementare, am decis să aduc ceva mai complicat. Anume punerea în aplicare a sortare. Raportarea clasică a manualului arată cam așa (doar partea principală):
Acest cod, desigur, poate fi scurtat, dar este deja detaliile și implementarea și optimizarea. Cu toate acestea, chiar și pentru un astfel de exemplu, am petrecut destul timp până când a implementat și a prins toate erorile observate. Și acum, pentru a înțelege modul în care algoritmul sortează pentru toate construcțiile este foarte dificil. Și acum uite ce am scris imediat pe LINQ:

Numai 5 linii, apoi rupte pentru comoditate! Și uite cât de ușor este acum pentru a explica algoritmul: ia primul element disponibil, să ia toate elementele unei matrice mai mici decât, să le sorteze în conformitate cu aceeași algoritom, adaugă un element egal cu acest lucru, și o mare, sortate dupa acelasi algoritm. Totul este simplu, banal și ușor de înțeles.
Nu vrem rapid, vrem sortare la alegere. Nimic nu este mai ușor:

Vedeți, logică și înțelegere destul de clară. Deci, de ce aveți nevoie de mai multe cicluri?

Articole similare