Over gekekenjAnO! schreef op donderdag 15 oktober 2009 @ 15:50:
[...]
nee, want bij een exception wordt een nieuwe exception gegooid en bereik je nooit het return statement.

Het is m'n dag niet.
Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.
Over gekekenjAnO! schreef op donderdag 15 oktober 2009 @ 15:50:
[...]
nee, want bij een exception wordt een nieuwe exception gegooid en bereik je nooit het return statement.
We have a winner, soort vanBobbyD82 schreef op donderdag 15 oktober 2009 @ 15:46:
code:
1 result = dao.addBar(bar);
als addBar een exception throwt, geef je gewoon true terug, en dat kan de bedoeling niet zijn?
Edit: verduidelijkt.
[ Voor 13% gewijzigd door Standeman op 15-10-2009 15:57 ]
The ships hung in the sky in much the same way that bricks don’t.
[ Voor 18% gewijzigd door Nick_S op 15-10-2009 15:56 ]
'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| final String sql = "UPDATE Ranking_Rankings SET " + "@qcol = @question," + "@descol = @description," + "@endatecol = @enddate," + "@imagecol = @imageid," + "@displaycol = @display " + "WHERE @idcol = @id" .replace("@idcol", ID) .replace("@qcol", QUESTION) .replace("@descol", DESCRIPTION) .replace("@endatecol", ENDDATE) .replace("@imagecol", IMAGEID) .replace("@displaycol", DISPLAY_AFTER_VOTE) .replace("@id", Long.toString(ranking.getId())) .replace("@question", ranking.getQuestion().replace("'", "''")) .replace("@description", ranking.getDescription().replace("'", "''")) .replace("@enddate", dateFormat.format(ranking.getEndDate())) .replace("@imageid", Integer.toString(ranking.getImageId())) .replace("@display", (ranking.getDisplayAfterVote()) ? "1" : "0"); |
Als je de method zo ziet verwacht je niets, want het is totaal niet duidelijk wat de semantische betekenis is van die boolean. En blijkbaar moet je zelfs een rollback() doen als addBar() false returnt, dus "het is niet gelukt" zal het dan wel niet zijn. Wellicht een "het mag niet", terwijl je de exceptions gebruikt voor de echt uitzonderlijke gevallen (database (verbinding) errors). En dan is de code op zich prima.Standeman schreef op donderdag 15 oktober 2009 @ 15:54:
[...]
We have a winner, soort van
Als je method zo ziet verwacht je dat false wordt meegegeven indien er iets faalt. (alle clients van de class gaan daar ook vanuit).
[ Voor 78% gewijzigd door .oisyn op 15-10-2009 16:19 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ehm, hij geeft toch gewoon false terug als bar niet wordt toegevoegd? Of een exceptie als er iets misgaat en true als het lukt. Lijkt me prima in orde.Standeman schreef op donderdag 15 oktober 2009 @ 15:54:
[...]
We have a winner, soort van
Als je method zo ziet verwacht je dat false wordt meegegeven indien er iets faalt. (alle clients van de class gaan daar ook vanuit).
Je mag verwachten dat wanneer er een method een boolean retourneerd ook false kan kan retourneren. Maar dat gaat in dit geval dus nooit gebeuren.
Ik ga 'm maar even aanpassen, kan ik gelijk die extra rollback eruit gooien!
When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.
Ampera-e (60kWh) -> (66kWh)
Er is heel veel nut voor true of false regardless van exceptions. Exceptions gebruiken voor programflow is zo verschrikkelijk fout dat het bijna pijn doet als ik het typ.!null schreef op donderdag 15 oktober 2009 @ 16:30:
In principe is het fout ontwerp. Wat is het nut van true or false als er al met excepties wordt gegooid.
In de situatie waarin er niet met exceptions wordt gegooid is true of false veel te beperkt en wil je een foutcode retourneren. (maar dan ben je eigenlijk zelf foutafhandeling aan het maken).
Er zijn maar weinig situaties waarin iets niet kan lukken zonder dat dat meteen een error is.
When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.
[ Voor 16% gewijzigd door !null op 15-10-2009 18:20 ]
Ampera-e (60kWh) -> (66kWh)
Is het ook niet, omdat er geen comments bij staan. Als is gedocumenteerd dat ie teruggeeft of de postzegel al in de verzameling zat, dan is dat een prima designkeuze imho.!null schreef op donderdag 15 oktober 2009 @ 18:14:
Vind ik niet erg duidelijk, vind ik niet echt zelfuitleggend ofzo.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ik hoop bovendien dat getDAOFactory en loadFooDAO nooit een DataAccessException throwen...Standeman schreef op donderdag 15 oktober 2009 @ 15:01:
Weer een leuke bug gevonden in de code. Deze heeft vziw nog geen problemen opgeleverd, maar dat is imo slechts een kwestie van tijd.
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 try { daoFactory = DAOFactory.getDAOFactory(DAOFactory.DBMS); dao = daoFactory.loadFooDAO(); //... } catch(DataAccessException dax) { log.error(dax.getMessage()); dao.rollback(); //!!! throw new ModelControllerException(dax); } // ...
ASSUME makes an ASS out of U and ME
Exception handling is erg traag. Het is veel sneller/performant om met errorcodes te werken dan een exception op te gooien.!null schreef op donderdag 15 oktober 2009 @ 18:14:
....
Ik zeg niet dat er 1 manier is om het te doen, maar in veel gevallen is true or false totaal niet genoeg en kan je daarmee dus ook niet een programma flow maken. En om de rest er dan aan vast te knutselen met exceptions is dan ook weer zo'n half om half werkje. Try/catch/finally maakt een goede flow met foutafhandeling mogelijk maar om daar nou alles in te doen is ook weer zoiets...
Ampera-e (60kWh) -> (66kWh)
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Kater? Eerst water, de rest komt later
Ampera-e (60kWh) -> (66kWh)
Exception is per definitie een manier op flow te regelen. Een zeer specifieke flow, namelijk de uitzonderlijke flow. Ik ben het met je eens dat je happy flow zeker niet via exceptions moet lopen, maar vanaf daar wordt het minder zwart wit. Een authenticatie module die een exception gooit bij een niet geslaagde inlogpoging wil ik niet per definitie fout noemen.Haan schreef op vrijdag 16 oktober 2009 @ 11:03:
Het punt is denk dat het gebruiken van Exceptions om je program flow te regelen wezenlijk fout is. Een exception heet niet voor niets exception, het is een uitzonderlijke situatie. Er is natuurlijk niets mis met het opvangen van exceptions an sich. (tenzij je overal try {..} catch(Exception e) { ..} doet natuurlijk)
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Tja, je kan het ook prima combineren. Ik gebruik gewoon een makkelijke authenticate functie. Die functie retourneert een auth-result. Dit result in valid of niet (dus geslaagd of niet), maar geeft ook beschrijvingen. Die kan je bij niet-valid checken. Daar zitten weer codes in als "credentials wrong", "identity not found", "identity ambigue" en een "overige fouten". Je kan dus imho een exception gooien bij een overige fout, omdat het iets is wat je niet verwacht. Het inloggen met verkeerde gegevens is juist iets wat je wel verwacht (waarom moet je anders inloggen?).Janoz schreef op vrijdag 16 oktober 2009 @ 11:34:
[...]
Exception is per definitie een manier op flow te regelen. Een zeer specifieke flow, namelijk de uitzonderlijke flow. Ik ben het met je eens dat je happy flow zeker niet via exceptions moet lopen, maar vanaf daar wordt het minder zwart wit. Een authenticatie module die een exception gooit bij een niet geslaagde inlogpoging wil ik niet per definitie fout noemen.
Dat lijkt me per definitie zo: in elke for-loop kan je een ArrayIndexOutOfBoundException krijgen, bij elke methode-aanroep op een object een NullPointerException. Die performance penalty heb je dus altijd, pas bij het gooien gebeurt er iets wat tijd kost.!null schreef op vrijdag 16 oktober 2009 @ 11:17:
Overigens, eventueel performance verlies door exceptions is toch alleen sprake van als daadwerkelijk de exception gegooid wordt? Bij normaal traject leidt het toch niet tot performance verlies? Dan is het imo ook niet echt een issue, dat performance verhaal.
1
2
3
4
5
6
7
8
9
| int i = 0, sum = 0; try { while (true) { sum += array[i]; i++; } } catch (IndexOutOfBoundsException e) {} system.out.println(sum); |
Sorry maar dat kan niet anders dan echt complete utter onzin zijn.MBV schreef op vrijdag 16 oktober 2009 @ 11:50:
Dat bleek in nagenoeg constante tijd te werken, t.o.v. lineair voor de for-loop
[ Voor 64% gewijzigd door .oisyn op 16-10-2009 12:09 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Je vergeet een cruciaal detail: ik zat nog op het HBO, 2e jaar geloof ik, dus dat is 2003. En het was iets wat de docent al een paar jaar daarvoor had uitgezocht, dus vandaar mijn gok Java v1.2. Het probleem met een gewone for-loop is namelijk dat de check of hij kleiner is 2x wordt gedaan: 1x door de Array zelf (if (i > length) throw new Exception) en een keer door je loop-definitie. Mijn gok is dan ook dat de java6 syntax sneller is:.oisyn schreef op vrijdag 16 oktober 2009 @ 11:52:
[...]
Sorry maar dat kan niet anders dan echt complete utter onzin zijn.
.edit: een snelle test leert wel dat hij bij het 100x optellen van alle elementen in een array van 1.000.000 elementen een milliseconde sneller is (~55 ipv ~56 ms). Wat op zich wel logisch is want je spaart 100.000.000 compares uit.
1
2
3
| int sum = 0; for (int item: array) sum += item; printf(sum); |
[ Voor 20% gewijzigd door MBV op 16-10-2009 14:04 ]
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| if ($bla == 1) { echo '<input type="radio" name="bla" value="1" checked /> Iets <input type="radio" name="bla" value="2" /> Iets <input type="radio" name="bla" value="3" /> Iets <input type="radio" name="bla" value="4" /> Iets'; } elseif ($bla == 2) { echo '<input type="radio" name="bla" value="1" /> Iets <input type="radio" name="bla" value="2" checked /> Iets <input type="radio" name="bla" value="3" /> Iets <input type="radio" name="bla" value="4" /> Iets'; } elseif ($bla == 3) { echo '<input type="radio" name="bla" value="1" /> Iets <input type="radio" name="bla" value="2" /> Iets <input type="radio" name="bla" value="3" checked /> Iets <input type="radio" name="bla" value="4" /> Iets'; } elseif ($bla == 4) { echo '<input type="radio" name="bla" value="1" /> Iets <input type="radio" name="bla" value="2" /> Iets <input type="radio" name="bla" value="3" /> Iets <input type="radio" name="bla" value="4" checked /> Iets'; } else { echo '<input type="radio" name="bla" value="1" checked /> Iets <input type="radio" name="bla" value="2" /> Iets <input type="radio" name="bla" value="3" /> Iets <input type="radio" name="bla" value="4" /> Iets'; } |
Niemand kan je dan ook verwijten dat je code niet consistent is!Verwijderd schreef op donderdag 29 oktober 2009 @ 20:42:
En ik ben te lui om het goed te maken nu, ga gewoon een nieuwe optie toevoegen op dezelfde manier.
ASSUME makes an ASS out of U and ME
Waarom eigenlijk zoveel info? Geef je die ook aan de user? Ik geef altijd een "combinatie onbekend" melding, als je weggeeft dat alleen een password niet klopt geef je al bevestiging dat een username wel bestaat...mithras schreef op vrijdag 16 oktober 2009 @ 11:50:
[...]
Tja, je kan het ook prima combineren. Ik gebruik gewoon een makkelijke authenticate functie. Die functie retourneert een auth-result. Dit result in valid of niet (dus geslaagd of niet), maar geeft ook beschrijvingen. Die kan je bij niet-valid checken. Daar zitten weer codes in als "credentials wrong", "identity not found", "identity ambigue" en een "overige fouten". Je kan dus imho een exception gooien bij een overige fout, omdat het iets is wat je niet verwacht. Het inloggen met verkeerde gegevens is juist iets wat je wel verwacht (waarom moet je anders inloggen?).
Maar ik ben het met je eens dat het eea wel wat genuanceerder mag.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| PreparedStatement pstmt = null; String sql = "SELECT * FROM AD_Archive WHERE AD_Client_ID=?"; if (whereClause != null && whereClause.length() > 0) sql += whereClause; sql += " ORDER BY Created"; try { pstmt = DB.prepareStatement (sql, null); pstmt.setInt (1, ctx.getAD_Client_ID()); ResultSet rs = pstmt.executeQuery (); while (rs.next ()) list.add (new MArchive(ctx, rs, null)); rs.close (); pstmt.close (); pstmt = null; } catch (Exception e) { s_log.log(Level.SEVERE, sql, e); } try { if (pstmt != null) pstmt.close (); pstmt = null; } catch (Exception e) { pstmt = null; } if (list.size() == 0) s_log.fine(sql); else s_log.finer(sql); // MArchive[] retValue = new MArchive[list.size()]; list.toArray(retValue); return retValue; } |
Cartman! schreef op donderdag 29 oktober 2009 @ 21:49:
[...]
Waarom eigenlijk zoveel info? Geef je die ook aan de user? Ik geef altijd een "combinatie onbekend" melding, als je weggeeft dat alleen een password niet klopt geef je al bevestiging dat een username wel bestaat...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| switch($result->getCode()) { case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID: $this->_helper->log('False login attempt for ' . $result->getIdentity()); case Zend_Auth_Result::FAILURE: case Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS: case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND: $this->_helper->flashMessenger(array('error'=>'Login wrong')); break; case Zend_Auth_Result::SUCCESS: $this->_helper->flashMessenger(array('success'=>'Login succeed')); break; default: // Zend_Auth_Resul::FAILURE_UNKNOWN throw new Exception('Error'); } |
Volgens mij krijg je altijd een error exception als correct inlogt
Programmer - an organism that turns coffee into software.
Nietus!LuCarD schreef op vrijdag 30 oktober 2009 @ 10:46:
[...]
Volgens mij krijg je altijd een error exception als correct inlogt
laatste break mist.
[ Voor 40% gewijzigd door mithras op 30-10-2009 10:52 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| if(count($monthsArray) == 1){ $prev = -1; $next = -1; } else{ if(current($monthsArray)==$monthsArray[$index]){ $next = -1; $prev = array_search(next($monthsArray), $monthsArray); } else{ while(current($monthsArray)!=$monthsArray[$index]){ next($monthsArray); } $next = array_search(prev($monthsArray),$monthsArray); next($monthsArray); if(next($monthsArray)!=FALSE){ $prev = array_search(current($monthsArray), $monthsArray); } else { $prev = -1; } } } |
1
| array_search(prev($monthsArray),$monthsArray); |
Ampera-e (60kWh) -> (66kWh)
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
2
3
4
5
6
7
8
9
10
11
| succes = ValidateUser(username, password) goto gaverder IF sucess <> True THEN .... allerlei code om de gebruiker te weigeren in het systeem.... END IF gaverder: ... code die toegang geeft tot het systeem. |
[ Voor 3% gewijzigd door Laurens-R op 05-11-2009 14:03 ]
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
[ Voor 7% gewijzigd door Laurens-R op 05-11-2009 15:14 ]
Met een code review van tevoren was hij niet eens ingechecked geweestJanoz schreef op donderdag 05 november 2009 @ 14:31:
Met een fatsoenlijke unittest was deze code nog niet eens door de nightly build gekomen....
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Sorry, wat is peer-programming?
Ampera-e (60kWh) -> (66kWh)
Dat is als je software schrijft voor de concurrent van Apple
[ Voor 18% gewijzigd door .oisyn op 05-11-2009 15:19 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Peer != Pear! http://www.answers.com/pear En het is niet voor een concurrent, maar voor een emulator.oisyn schreef op donderdag 05 november 2009 @ 15:17:
[...]
Dat is als je software schrijft voor de concurrent van Apple
(MBV bedoelt pair programming)
Sorry, it all sounds alikequote: http://www.answers.com/peer# A person who has equal standing with another or others, as in rank, class, or age: children who are easily influenced by their peers.
Dearest creature in Creation
Studying English pronunciation,
I will teach you in my verse
Sounds like corpse, corps, horse and worse.
It will keep you, Susy, busy,
Make your head with heat grow dizzy; ...
Ik doelde dan ook op het Nederlandse woord voor de vrucht
[ Voor 65% gewijzigd door .oisyn op 05-11-2009 15:51 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Gelijk appel programming!!null schreef op donderdag 05 november 2009 @ 15:17:
[...]
Sorry, wat is peer-programming?
Het was er iig niet doorheen gekomen met ook meer iets van een beetje fatsoenlijk testplan.
Maarja, je hebt idd van die projecten die dan op het einde lopen, wordt weinig meer aan gedaan dan.
Going for adventure, lots of sun and a convertible! | GMT-8
Verwijderd
1
2
3
4
5
6
7
8
| <?php $result=mysql_query("SELECT * FROM users WHERE id=1"); $row=mysql_fetch_object($result); mysql_query("DELETE FROM users WHERE id=1"); $newpass=$_POST['password']; $query="INSERT INTO users (id,username,password) VALUES ('1','{$row->username}','{$newpass}')"; mysql_query($query) ?> |
je kunt die $_POST['password']; ook direct in je $query variabele stoppen, die $newpass kan dus wel weg.Verwijderd schreef op donderdag 05 november 2009 @ 16:26:
ik ben al eens dit tegengekomen:
PHP:
1 2 3 4 5 6 7 8 <?php $result=mysql_query("SELECT * FROM users WHERE id=1"); $row=mysql_fetch_object($result); mysql_query("DELETE FROM users WHERE id=1"); $newpass=$_POST['password']; $query="INSERT INTO users (id,username,password) VALUES ('1','{$row->username}','{$newpass}')"; mysql_query($query) ?>
Wie oh wie ziet wat er overbodig is...
Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three
of je doet een update...BM schreef op donderdag 05 november 2009 @ 16:30:
[...]
je kunt die $_POST['password']; ook direct in je $query variabele stoppen, die $newpass kan dus wel weg.
Ik heb het gezien,MBV schreef op donderdag 29 oktober 2009 @ 21:50:
The Real WTF©: Javacode, die net zoals alle rammelende PHP-websites de code in strings opbouwt op de meest onmogelijke manieren (if(x) sql += "...", 100x genest). Representatief voorbeeld:
Java:
1// code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| public synchronized int executeQuery(final Connection connection, final String sql, final ResultSetHandler<?> handler) { Statement statement = null; ResultSet resultSet = null; try { statement = connection.createStatement(); if (handler != null) { resultSet = statement.executeQuery(sql); handler.handle(resultSet); } else { return statement.executeUpdate(sql); } } catch (SQLException e) { log.log(Level.SEVERE, e.getMessage(), e); } finally { try { if (resultSet != null) resultSet.close(); if (statement != null) statement.close(); if (connection != null) connection.close(); } catch (SQLException e) { log.log(Level.SEVERE, e.getMessage(), e); } } return 0; } |
1
2
3
4
5
6
7
8
9
10
11
12
| class PercentageVotesHandler implements ResultSetHandler<Integer> { public int percentage = 0; public void handle(ResultSet rs) throws SQLException { if (rs.next()) { percentage = Math.round(rs.getFloat("percentage")); } } public Integer getResults() { return percentage; } } |
Schaam je. Nooit Hibernate tegengekomen bij het zoeken naar hoe je SQL moet doen met Java?YopY schreef op donderdag 05 november 2009 @ 16:43:
[...]
Ik heb het gezien,. En ook zelf gemaakt, overigens, omdat ik niks beters wist.
1
2
3
4
5
| $alt = 'odd'; while($row = $db->nextRow()) { ... $alt = $alt == 'odd' ? 'odd' : 'even'; } |
Verwijderd
Die is wel heel erg, nog erger als iets als:Sebazztiaan schreef op vrijdag 06 november 2009 @ 06:50:
gister tegengekomen bij een collega, had net ternaire operators uitgevonden
code:
1 2 3 4 5 $alt = 'odd'; while($row = $db->nextRow()) { ... $alt = $alt == 'odd' ? 'odd' : 'even'; }
en dan met het briljante statement komen WHILE loops zijn kut, ik zie de alternating rowstyle niet!, met een FOR loop zou dit wel gelukt zijn! echt, ik zweer het je!
just:
1
2
3
4
| while (true) { $i = 1 - $i; } |
als hijSebazztiaan schreef op vrijdag 06 november 2009 @ 06:50:
gister tegengekomen bij een collega, had net ternaire operators uitgevonden
code:
1 2 3 4 5 $alt = 'odd'; while($row = $db->nextRow()) { ... $alt = $alt == 'odd' ? 'odd' : 'even'; }
en dan met het briljante statement komen WHILE loops zijn kut, ik zie de alternating rowstyle niet!, met een FOR loop zou dit wel gelukt zijn! echt, ik zweer het je!
just:
En voor de leesbaarheid had ik nog wat haakjes gebruikt:Mastermind schreef op vrijdag 06 november 2009 @ 09:04:
[...]
als hij
$alt = $alt == 'odd'? 'even': 'odd';
had gedaan had het wel gewerkt.
1
| $alt = ($alt == 'odd') ? 'even' : 'odd'; |
1
2
3
4
5
| for( $i = 0; $row = $db->nextRow(); $i++ ) { $rowStyle = ($i % 2 == 0) ? 'odd' : 'even'; .... } |
[ Voor 3% gewijzigd door Woy op 06-11-2009 09:38 ]
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
true, maar hij kon nu ez dit printenErkens schreef op vrijdag 06 november 2009 @ 09:23:
[...]
En voor de leesbaarheid had ik nog wat haakjes gebruikt:
PHP:
1 $alt = ($alt == 'odd') ? 'even' : 'odd';
Hoewel ik waarschijnlijk gewoon een boolean had gebruikt.
1
| print '<div class="row row-'.$alt.'">...</div>'; |
Jawel, maar ik geef je 5 euro als jij dat werkend krijgt in WebManager,MBV schreef op donderdag 05 november 2009 @ 16:58:
[...]
Schaam je. Nooit Hibernate tegengekomen bij het zoeken naar hoe je SQL moet doen met Java?
[ Voor 6% gewijzigd door YopY op 06-11-2009 09:57 ]
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
[ Voor 6% gewijzigd door MBV op 06-11-2009 13:20 ]
Ik heb daar ook naar gekeken, maar ik las dat en ik had niet iets van 'dit snap ik', danwel dat het snel in m'n app gezet kon worden, dus heb ik het niet toegepastJanoz schreef op vrijdag 06 november 2009 @ 10:00:
Ik was zelf erg gecharmeerd van Springs jdbcTemplate. Enkele jaren terug heb ik dat nog intensief toegepast in een omgeving waar ook geen Hibernate gebruikt kon/mocht worden. De structuur lijkt iig wel erg op wat jij ook al gedaan hebt.
[ Voor 8% gewijzigd door YopY op 06-11-2009 14:05 ]
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Verwijderd
[ Voor 18% gewijzigd door Verwijderd op 07-11-2009 14:01 ]
DudeCartman! schreef op zaterdag 07 november 2009 @ 15:04:
Iets wat ik me ineens herinner, een topic hier van heul lang geleden waarin iemand beweerde dat t gebruik van single quotes in html veel sneller zou zijn dan dubbele quotes omdat ze de helft minder ruimte verbruiken
En als 't dan toch alleen odd/even is had ik misschien nog eerder een AND bitmask met 1 gedaan (oneven getallen hebben altijd een hoge LSB), dus zoiets als:Woy schreef op vrijdag 06 november 2009 @ 09:37:
Ik had denk gewoon een for loop gebruikt, dan kan je later ook nog makkelijk een index vooraan de row plaatsen, of elke 10e rij een andere class geven.
PHP:
1 2 3 4 5 for( $i = 0; $row = $db->nextRow(); $i++ ) { $rowStyle = ($i % 2 == 0) ? 'odd' : 'even'; .... }
1
2
3
| for( $i = 0; $row = $db->nextRow(); $i++ ) { $rowStyle = ($i & 1 == 0) ? 'even' : 'odd'; } |
[ Voor 10% gewijzigd door prototype op 08-11-2009 03:06 ]
De Spring templates vind ik sowieso erg goed, ook de Hibernate- en JPA template. Het grootste voordeel is dat je alle boilerplate code kwijt bent (verplichte try/catch blokken).Janoz schreef op vrijdag 06 november 2009 @ 10:00:
Ik was zelf erg gecharmeerd van Springs jdbcTemplate.
Hibernate is dan ook bij uitstek geschikt voor bepaalde zaken (met name CRUD) en weer heel erg slecht in andere zaken (complexe queries, batchwerk, etc.). Staat ook aangegeven in de Hibernate Reference. Als ik op een project weer eens mensen hoor roepen dat 'je tegenwoordig niks meer van SQL en de database hoeft te weten omdat je Hibernate hebt', lopen de rillingen over mijn rug.MBV schreef op vrijdag 06 november 2009 @ 13:19:
De quote was "omdat ik niks beters wist". En zelf SQL code uitschrijven is in sommige gevallen verdedigbaar, ik heb bijvoorbeeld gelezen dat een port van Adempiere naar Hibernate zo achterlijke traag was dat je een uur bezig was met het laden van de applicatie.
1
2
3
4
| /* Return the result */ function _return_result($return) { return $return; } |
When I get sad i stop being sad and be awesome instead
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
When I get sad i stop being sad and be awesome instead
svn blameKwastie schreef op zondag 08 november 2009 @ 14:08:
*Kwastie hoopt dat dit door een andere stagiair gemaakt is*
{signature}
Gelukkig is de puntkomma bedoelt om statements te scheiden, en aangezien het de laatste statement in dat code block betreft is de puntkomma overbodigVerwijderd schreef op zaterdag 07 november 2009 @ 14:00:
Gelukkig ontbreekt de puntkomma ontbreekt op regel zeven, waardoor het sowieso niet zal werken.
In talen als Pascal ja. Vrijwel alle talen met C-like syntax (javascript is een bekende uitzondering) is het geen scheidingstoken maar onderdeel van een statement, en ze vereisen 'm dus. PHP ook. Je code runt dus niet zoals hij in de topic stondTsunami schreef op zondag 08 november 2009 @ 15:02:
[...]
Gelukkig is de puntkomma bedoelt om statements te scheiden, en aangezien het de laatste statement in dat code block betreft is de puntkomma overbodig
[ Voor 14% gewijzigd door .oisyn op 08-11-2009 18:34 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
2
3
4
5
6
7
| <?php echo "test"; exit() ?> |
[ Voor 41% gewijzigd door StM op 08-11-2009 18:47 ]
Verwijderd
Ja, maar werd op dat moment niet verwacht....Sh4wn schreef op zondag 08 november 2009 @ 19:00:
Niet echt een bug, maar ook weer iets van de de PHP parser, de ?> geldt gewoon als geldige afsluiter.
Ah, dat verklaart waarom mijn test niet runde - die had zowel geen sluitende accolade als geen closing tagPrisonerOfPain schreef op zondag 08 november 2009 @ 18:55:
In PHP geldt ?> als impliciete semicolon.
http://php.net/manual/en/...nstruction-separation.php
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Als je templates bouwt mbv php short tags is het wel lekker om óók de semicolon te kunnen missen hoorSite.to.Make schreef op zondag 08 november 2009 @ 19:09:
"It's not a bug, its a feature!"Ik vraag me af in hoeverre ze er over nagedacht hebben van te voren.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
[ Voor 5% gewijzigd door StM op 09-11-2009 00:59 ]
[ Voor 138% gewijzigd door Jaap-Jan op 09-11-2009 01:08 ]
| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett
| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett
Verwijderd
1
2
3
4
5
6
7
8
| <div class="bla"> <div id="blaat"> <?php echo '<span class="iets">'.$blaat.'</span> <span class="nogiets">'.(100 * $test + $lol).'</span>'; ?> </div> </div> |
1
2
3
4
5
6
| <div class="bla"> <div id="blaat"> <span class="iets"><?=$blaat?></span> <span class="nogiets"><?=(100 * $test + $lol)?></span> </div> </div> |
Mensen die daar verkeerde beslissingen over nemen zie ik er sowieso niet echt voor aan wel de goede beslissingen te nemen als het gaat om scheiding van de business en presentation logic.Site.to.Make schreef op maandag 09 november 2009 @ 01:13:
Wat mij oa heel vaak opvalt bij php-in-html template's, is dat er heel makkelijk wordt overgestapt op het gebruik van echo of print ipv uit de php mode te gaan. In iets als smarty is dat sowieso niet mogelijk. Aan de andere kant zijn er soms ook mensen die de meest vreselijke smarty code weten te produceren....
Verwijderd
Nah, ik ben nog nooit een server tegengekomen waar dit een probleem veroorzaakte, op het moment dat dit wel een probleem is, komen we daar tijdens de test-procedure achter en kunnen we het nog aan laten passen in de configuratie van de server. Over het algemeen hebben onze klanten geen cheapass budget hosting, dus dat zal nooit een probleem gaan worden. Mocht er dan ooit één geval komen waar het niet uit kan en er niet verhuisd kan worden, dan heeft m'n IDE een fijne replace functie.Patriot schreef op maandag 09 november 2009 @ 03:21:
Shorttags gebruiken is niet echt geweldig handig als code portability een issue is (een andere server kan shorttags uit hebben staan), maar het principe (niet onnodig html in je echo) is inderdaad goed.
Die blijven gewoon bestaan hoor?Cartman! schreef op maandag 09 november 2009 @ 10:09:
Ik ben ook fan van shorttags maar bedenk wel dat ze in PHP6 niet meer bestaan. Ik ben maar aan het wennen door de boel weer uit te schrijven dus.
Going for adventure, lots of sun and a convertible! | GMT-8
[ Voor 19% gewijzigd door Voutloos op 09-11-2009 10:56 ]
{signature}
Hij staat standaard uit, maar verwijderen gaan ze niet doen, dat zal namelijk een te grote impact hebben. Althans, dat is wat ik uit de php-mailinglist had gelezen een paar maanden geleden.Cartman! schreef op maandag 09 november 2009 @ 10:51:
Zijn ze daar op teruggekomen dan? Eerst hebben ze gezegd dat de short_tags depricated zouden zijn en gewoon helemaal niet meer bestaan net zoals magic_quotes.
1
2
3
4
5
6
7
8
| <c:choose> <c:when test="${conditie}"> hoi! </c:when> <c:otherwise> doei! </c:otherwise> </c:choose> |
Dit topic is gesloten.
Apple iPhone 16e LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq