"Jó" a programozási stílus?
2011-03-14T18:23:31+01:00
2011-03-16T21:07:00+01:00
2022-07-24T17:42:41+02:00
  • Köszönöm a válaszokat, megfogadom őket.
    Mutasd a teljes hozzászólást!
  • Szerintem csak a forráskód-gomb elmulasztása miatt lett ilyen átláthatatlan a kódja.

    Sőt, ha megnézed az eredeti kódot, ő sem rakta új sorba a nyitó kapcsos zárójeleket.


    Pradox:
    A kommentek tényleg hiányoznak, ami nem feltétlenül baj, mert cserébe a változónevek eléggé beszédesnek tűnnek, bár nem jöttem rá első olvasatra a kód szerepére.

    Ami inkább nem tetszik, az a PHP-be beágyazott HTML és az ebből fakadó kódismétlés.
    Az alábbi két sor szinte ugyan az:

    '<a href="?l=' . ($var['get_limit'] - 1) . '' . $link . '"><img src="img/icons/prev.png" alt="Előző" /></a>';
    és

    '<a href="?l=' . ($var['get_limit'] + 1) . '' . $link . '"><img src="img/icons/next.png" alt="Következő" /></a>'

    Ezeket szerencsésebb lenne egy függvénnyel generáltatni, aminek átadod a $var['get_limit']-et és egy logikai változót, hogy ez most a következő lesz-e, vagy az előző. A függvény pedig visszaadja a generált stringet.

    Az se szép, hogy globális paramétereket használsz.
    Az ilyenek általában arra utalnak, hogy létrehozhatnál egy osztályt, mert van egy csapat függvényed, ami ugyan azokon az adatokon dolgozik.

    Csak Paleko által szépített kódot olvastam el, mert a többi nagyon ronda. Használd a forráskódgombot. Nem véletlenül ilyen kihalt a téma.
    Mutasd a teljes hozzászólást!
  • Ráeresztettem egy kódszépítgetőt az első függvényedre, és ez lett belőle:

    function postnav($limit, $sql, $link) { global $postperpage, $skip, $postnav, $var; $allpost = mysql_fetch_array(mysql_query('select count(*) from ' . $sql . '')); if (!empty($var['get_limit']) && is_numeric($var['get_limit']) && $var['get_limit'] > 0) { $postperpage = $limit; $skip = (($limit * $var['get_limit']) - $limit); } else { $var['get_limit'] = 1; $postperpage = $limit; $skip = 0; } if ($var['get_limit'] > 1) $postnav = '<a href="?l=' . ($var['get_limit'] - 1) . '' . $link . '"><img src="img/icons/prev.png" alt="Előző" /></a>'; if ($allpost[0] > ($var['get_limit'] * $limit)) $postnav .= '<a href="?l=' . ($var['get_limit'] + 1) . '' . $link . '"><img src="img/icons/next.png" alt="Következő" /></a>'; }

    Már sokkal jobb, mint az eredeti, de számomra a nyitó kapcsosok új sorba helyezése túlságosan széttagolja a kódot. Magamnak így preparálnám ki:

    function postnav($limit, $sql, $link){ global $postperpage, $skip, $postnav, $var; $allpost = mysql_fetch_array(mysql_query('select count(*) from '.$sql.'')); if(!empty($var['get_limit']) && is_numeric($var['get_limit']) && $var['get_limit'] > 0){ $postperpage = $limit; $skip = (($limit * $var['get_limit']) - $limit); } else{ $var['get_limit'] = 1; $postperpage = $limit; $skip = 0; } if($var['get_limit'] > 1) $postnav = '<a href="?l='.($var['get_limit'] - 1).''.$link.'"> <img src="img/icons/prev.png" alt="Előző" /></a>'; if($allpost[0] > ($var['get_limit'] * $limit)) $postnav .= '<a href="?l='.($var['get_limit'] + 1).''.$link.'"> <img src="img/icons/next.png" alt="Következő" /></a>'; }

    Sajnos az eredetinek az olvashatóságával vannak gondok. Ha valamilyen módon áttekinthetőbbé teszed, akkor megkönnyíted magadnak, hogy átlásd később is a kódodat.
    Ki kell még találnod, hogy hogyan kommentezz, mert az is nagyon fontos!
    Mutasd a teljes hozzászólást!
  • Szerintem technikailag jó a kódod, csak rosszul tördelt / nagyon olvashatatlan.
    De ez lehet azért van, mert nem használtad a forráskód gombot és a fórummotor kiszedte a fölösleges whitespace-eket...

    De majd a nálam profibbak biztos írnak bővebb jellemzést.
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Már több éve foglalkozom a webprogramozással, de sajnos még mindig annyira törekszem a maximális teljesítményre, hogy az általam megírt kódot szinte minden nap újra akarom írni, hogy még jobb, és egyszerűbb legyen. Pedig sokszor tanulmányoztam más (hasonló) rendszereket, melyek az enyémekhez képest, sokkal bonyolultabbak voltak. Szeretném megkérdezni Tőletek, olyanoktól, akik szintúgy értenek ehhez, hogy jó megoldás-e, az, ahogyan Én, egy adott helyzetben próbálom megoldani a feladatot.

    #1 A lekért tartalom oldalakra bontása és lapozása
    A postnav függvény előállítja a lapozó gombokat. A függvénynek adhatok egy SQL értéket, attól függően hogy éppen hol akarom használni, hogy honnan kérje le a sorok számát. Plussz a LINK változónak megadhatom a jelenlegi oldalt (az oldalakat get érték alapján hívom be), ez azért kell, hogy ha pl. kommenteket lapozok, akkor a lapozó gomb linkje is azon legyen)

    function postnav($limit, $sql, $link){
    global $postperpage, $skip, $postnav, $var;
    $allpost = mysql_fetch_array(mysql_query('select count(*) from '.$sql.''));
    if(!empty($var['get_limit']) && is_numeric($var['get_limit']) && $var['get_limit'] > 0){ $postperpage = $limit; $skip = (($limit * $var['get_limit']) - $limit); } else { $var['get_limit'] = 1; $postperpage = $limit; $skip = 0; }
    if($var['get_limit'] > 1) $postnav = '<a href="?l='.($var['get_limit'] - 1).''.$link.'"><img src="img/icons/prev.png" alt="Előző" /></a>';
    if($allpost[0] > ($var['get_limit'] * $limit)) $postnav .= '<a href="?l='.($var['get_limit'] + 1).''.$link.'"><img src="img/icons/next.png" alt="Következő" /></a>';
    }

    postnav(20, 'sunci_comments where news = '.$var['get_news'].'', '&p=news&n='.$var['get_news'].'');

    #2 Keresési SQL felépítése - több táblában és több szóval
    A függvénynek meg kell adnom a táblákat, és a keresési szavakat, ezután előállítja az SQL-t. A keresési szó (a words változó), az a keresési GET értékkel egyenlő (vmi.hu/?search=szia mia).

    function searchsql($tables, $words){
    if(!empty($words) && strlen($words) > 1){
    $words = explode(' ', $words);
    foreach($words as $word){
    $words_a[] = '"%'.$word.'%"';
    }
    $searchWords = implode(' or ', $words_a);
    $tables = explode(',', $tables);
    foreach($tables as $table){
    $searchSQL[] = ''.$table.' like '.$searchWords.'';
    }
    return 'where '.implode(' or ', $searchSQL).'';
    }
    }

    Nagyon "hülye" megoldások?

    Köszönöm a válaszokat, előre is!
    Mutasd a teljes hozzászólást!
abcd