Леший Posted August 20, 2010 Report Share Posted August 20, 2010 codez, runa ir par to, vai nedara funkcija q2() vēl kaut kādās perversijas. Un tavs kods kaut arī ir saprotams, bet taj pašā laikā mazāk saprotams, nekā, piemēram $user = DB::query("SELECT * FROM user WHERE id = %s", $ID)->result(0, 0); Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2010 Report Share Posted August 20, 2010 (edited) codez, runa ir par to, vai nedara funkcija q2() vēl kaut kādās perversijas. Un tavs kods kaut arī ir saprotams, bet taj pašā laikā mazāk saprotams, nekā, piemēram $user = DB::query("SELECT * FROM user WHERE id = %s", $ID)->result(0, 0); Šeit es varu tikai nojaust, ka DB::query atgriež kaut kādu objektu un ka result atgriež rezultātu (man nezināmā formā), bet, ko nozīmē (0,0) man nav ne jausmas, ja vien es neesmu pazīstams ar šīm klasēm. Un kā es varu zināt vai tā funkcija query nedara vēl kādas perversības? Edited August 20, 2010 by codez Quote Link to comment Share on other sites More sharing options...
Леший Posted August 20, 2010 Report Share Posted August 20, 2010 mysql_result($res, 0, 0); neko neizsaka? Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 20, 2010 Report Share Posted August 20, 2010 Īsti laikam nesaprotu vairs par ko iet runa, bet vismaz es domāju pašas veidotās metodes nosaukumu, Jūs ar Kaklz izskatās jau vairāk runājiet par to vai vispār taisīt klasi, vai izmantot iebūvētās php funkcijas. Es tieši domāju ka pārlieku lielā saīsināšana metožu nosaukumos nav īsti laba, par to ka klases saīsina kodu un ir ērtāk, to neapstrīdu. Šis piemērs: function articlesByTag(){ $comments=DB::q3('SELECT * FROM comments c, users u WHERE c.uid=u.id and c.aid=%s LIMIT %s,20',$_POST['aid'],$_POST['offset']); echo json_encode($comments); } domāju labāk un saprotamāk izskatītos, ja būtu funkcija nosaukta pilnīgāk: function articlesByTag(){ $comments=DB::query_assoc('SELECT * FROM comments c, users u WHERE c.uid=u.id and c.aid=%s LIMIT %s,20',$_POST['aid'],$_POST['offset']); echo json_encode($comments); } To nosaukumu query_assoc() paņēmu no savas db klases. Tagad sāku domāt par PDO, bet cik atceros pats taisīju nosaukumus, lai saskanētu ar php mysql funkciju nosaukumiem, tā uzreiz intuitīvi varēja saprast un atcerēties ko funkcija dara, nu arī klāt komentāri. Man tās funkcijas bij sekojošas: query_array(), query_assoc(), query_row(), query_value(). Query_value atgrieza vienu vērtību, atbilstoši tam, kas tiek atgriezts ar vaicājumu, pārējās atgriež masīvus. Man nebija koloniņas metodes, bet to es visticamāk nosauktu par query_column(). Cik skatos izplatītāki nosaukumi tieši mysql klasēs ir izmantojot 'fetch' nevis 'query', piemēram fetch_assoc(). Kavacky, diez vai tas daudz ko mainīs, jo tāda pieeja kur skaitlis norāda uz dimensiju noderēs tikai tad ja Tu paskatoties uz q() sapratīsi un zināsi ka tas pilnīgi noteikti ir query, nevis, piemēram quantity. Pie tam, tieši vaicājumu gadījumā, dimensiju skaits var būt vairākiem variantiem viens. Nedomāju ka saīsinot funkcijas nosaukumu līdz vienam simbolam saekonomēsi laiku. Piemēram es burtus rakstu neskatoties uz klaviatūru, rakstot ciparus un iekaviņas gan, tāpēc kopumā pierakstot funkcijas nosaukumus query_assoc() un q0() ar visām iekaviņām laika ziņā neko īpaši neiegūšu. Pie tam kā jau teicu izstrādāšanas vides ļauj izmantot autocomplete un tur, kad atveras saraksts ar metodēm, viena burta metožu nosaukumi gan lielu priekšstatu par funkciju nedos, protams ja zin viņas no galvas un visā klasē ir tikai 5 metodes, tad jā, bet normāla datubāzes klase parasti satur daudz vairāk metodes, ja ne sākumā, tad ar laiku to parasti nākas paplašināt. Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2010 Report Share Posted August 20, 2010 (edited) Леший, nē, jo es parasti lietoju Mysqli klasi un tur nav tāda result() metode. Edited August 20, 2010 by codez Quote Link to comment Share on other sites More sharing options...
Kaklz Posted August 20, 2010 Report Share Posted August 20, 2010 Maris-S, es jau no sākta gala runāju tikai un vienīgi par codez 1, 2, 3 burtu neko neizsakošajiem metožu nosaukumiem. Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 20, 2010 Report Share Posted August 20, 2010 (edited) Codez, tas ka šis kods: $user=DB::q2('SELECT * FROM user WHERE id=%s',$uid); echo "Hello, $user"; ir saprotams neviens neapstrīd, bet kā ir kad Tev vajag atrast metodi kaut kādai konkrētai darbībai no metožu saraksta, kas Tev ir pieejams. Kodā tas viss ir saprotams, bet kā tad sanāks ja situācijai ir jāpieiet no otra gala un jāmeklē metode kas dara darbību, nevis jānosaka darbību ko dara konkrētā metode? Edited August 20, 2010 by Maris-S Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2010 Report Share Posted August 20, 2010 Maris-S, paskatoties uz abiem koda piemēriem, nav nozīmer, vai tiek lietots DB::q3 vai DB::query_assoc, jo abos ir pilnīgi skaidrs, kas tur tiek darīts un, ja vien tās metodes nedara nekādas perversības (bet tas nav atkarīgs no metodes nosaukuma) tad ir vienlīdz saprotami abi kodi, tikai viens mīnusiņš ir tavam variantam. Piemēram, man, portatīvā monitorā, tavs variants ir ar scrollbar-u un es neredzu pašas beigas, kamēr mans ir bez - sīkums, bet tomēr. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted August 20, 2010 Report Share Posted August 20, 2010 Codez, šis iemesls nu vienkārši gāž mani gar zemi! :)) Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 20, 2010 Report Share Posted August 20, 2010 Kā jau teicu, kodā ir skaidrs, bet kad jāmeklē metode pēc nosaukuma un jādomā ko tad īsti viņa dara, tad gan ir atšķirība. Par rindas garumu saekonomējot kādus 10 simbolus, pat 30 simbolus Tu neko īpaši neiegūsi, nopietni vaicājumi dažreiz izveido skrullīti ne tikai uz sāniem, bet arī uz augšu un leju. Quote Link to comment Share on other sites More sharing options...
Леший Posted August 20, 2010 Report Share Posted August 20, 2010 codez, praksē ir gadījumi, kad ir vajadzīgs pliks, neapstrādāts results. Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2010 Report Share Posted August 20, 2010 (edited) ir saprotams neviens neapstrīd, bet kā ir kad Tev vajag atrast metodi kaut kādai konkrētai darbībai no metožu saraksta, kas Tev ir pieejams. Kodā tas viss ir saprotams, bet kā tad sanāks ja situācijai ir jāpieiet no otra gala un jāmeklē metode kas dara darbību, nevis jānosaka darbību ko dara konkrētā metode? Tur jau tā lieta, ka datubāzes kverija metode ir viena no visbiežāk lietotajām un programmētājam, kurš strādā attiecīgajā ietvarā, viņas ir zināmas no galvas. Piemēram, es visām klasēm, kur ir singletoni, izmantoju i(), metodi nevis instance(), lai atgrieztu instanci. Kods daudzās vietās dēļ tā ir daudz lasāmāks, vienkārši tāpēc, ka tas ir īsāks un tākā es zinu, ka i() vienmēr nozīmēs instance mana FW ietvaros, man tas nesagādā problēmas. Vienīgais arguments, ko šeit min, galvenokārt ir tas, ka tas nav intuitīvi un uzreiz saprotami, bet šāds arguments ir ārpus prakstiskās realitātes, jo realitātē cilvēkam, kurš kodē vai uztur sistēmu ir kaut nedaudz jābūt pazīstamam ar FW, kurā šī sistēma ir veidota, šinī gadījumā manu FW. Jo tāpat katrā freimworkā līdzīgām klasēm var būt atšķirīgi metožu nosaukumi, kas dara vienu un to pašu. Tāpēc realitātē ir jābūt pazīstamam ar FW, kurā strādā. Mēs te protams varam teoretizēt, ka ome lasot, nesapratīs, kas ir DB::q3, bet DB::queryRowSet sapratīs, bet tas ir tikai teorijā. Edited August 20, 2010 by codez Quote Link to comment Share on other sites More sharing options...
codez Posted August 20, 2010 Report Share Posted August 20, 2010 (edited) Codez, šis iemesls nu vienkārši gāž mani gar zemi! :)) Daži tavi argumenti nav labāki. :) codez, praksē ir gadījumi, kad ir vajadzīgs pliks, neapstrādāts results. DB::q() atgriež pliku result objektu. Edited August 20, 2010 by codez Quote Link to comment Share on other sites More sharing options...
Леший Posted August 20, 2010 Report Share Posted August 20, 2010 (edited) Nezinu, kā tev, bet man DB::query() saglabā result objektu iekš DB objekta mainīga, jo biežāk tomēr pliku result man nav jāatgriež. Pēc tam ērti darīties piemēram šādi $clients = DB::query(..)->fetch_assoc(); Edited August 20, 2010 by Леший Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 20, 2010 Report Share Posted August 20, 2010 Konkrētas klases pārzināšana gan ir jautājums, kurš būtu jāapskata no visām pusēm. Piemēram, man ir gadījies, kad izveidoju klasi un dažas no metodēm neizmantoju bieži, gadās pie viņām atgriezties pēc ilgāka laika, ka pat neatceros nosaukumu, kamēr nepaskatos metožu sarakstu, paskatoties protams var izsecināt kura no metodēm ir šitā. Tādā situācijā man metožu nosaukumi q1(), q2(), q3() nepalīdzētu. Protams Tev taisnība ka datubāžu vaicājumu metodes tiek izmantotas ļoti bieži, bet piemēram klasei ko es iepriekš aprakstīju es pārsvarā vienmēr lietoju query_assoc() un query_value() metodes, dažreiz query_row(), pat neatceros vai vispār esmu lietojis query_array() un ja man retāk izmantojamās metodes, piemēram query_row() un query_array(), būtu nosauktas ar cipariem, es noteikti viņas kaut reizi, bet sajauktu. Mans viedoklis par šo tāds. Savējās bieži izmantojamās klases metožu nosaukumos lietot nosaukumus kā qn() ir pieļaujams, bet nav ieteicams, jo nevar zināt vai kādam vēl būs jāstrādā pie projekta un vai nesanāks tā ka ilgstoši nevajadzēs izmantot klasi. Taisot reti izmantojamas klases vai pat vienreizējās konkrētam projektam vai arī klasēm plašākai publikai tādi nosaukumi ir pilnīgi izslēgti. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.