Drinkkireseptitietokanta ja käyttäjähallinnan sisältävä web-sovellus, jossa reseptejä voi luoda, lukea ja muokata.
- Admin-käyttäjä; tunnus: Sorsa, salasana: hanhi.
- Peruskäyttäjä; tunnus: Sirpa, salasana: perussirpa.
This project forked from tsoha/tsoha-bootstrap
Tietokantojen harjoitustyö
License: GNU General Public License v3.0
Drinkkireseptitietokanta ja käyttäjähallinnan sisältävä web-sovellus, jossa reseptejä voi luoda, lukea ja muokata.
Hei,
tässä 2. koodikatselmointiin liittyen palautetta. Katselmointi tehty 24.8. n. klo 22.
Aloitin lukemalla harjoitustyön aiheen, reseptiarkistot taitavat olla aika suosittuja aiheita! :) Testasin myös sovellusta selaimessa, ja sivut näyttivät hyvin selkeiltä ja kaikki mikä toimii, näyttäisi toimivan oikein. Tässä siis vain pari pientä sivuhuomiota sivuista. Huomasin, että navigaatiopalkissa puuttuu ään pisteet Lisaa resepti-linkistä, niin käy itsellekin usein kun kirjoittaa koodin ilman ääkkösiä ja sitten unohtaa ne ”oikeasta tekstistä” myös. Lisäksi lisäyspäivästä kannattaa poistaa liika tarkkuus (sen voi käsittääkseni tehdä joko ihan tietokantaan tallettaessa tai sitten myöhemmin trimmaamalla hakutulosta).
Committisi ovat hyvin nimettyjä ja niistä näkee sovelluksen kehittymisen. On ehkä makuasia, kannattaisiko committeja tehdä useammin, niin että työn vaiheet jakautuisivat vielä pienempiin kokonaisuuksiin versionhallinnassa.
Metodit ja luokat ym. olivat kaikki selkeästi yhdellä kielellä englanniksi. Koodi oli hyvin luettavaa, ja siinä pysyi helposti mukana. Muutamassa malliluokassa (esim. recipe.php) sisennykset vähän hyppivät ainakin tässä GitHubin esikatselussa, jos ne korjaa niin sitten luettavuus paranee entisestään. helloworld.html ja hello_word_controller.php eivät taida tehdä enää sovelluksessa mitään? Jos näin oli, niistä ehkä uskaltaa luopua.
Sovelluksen rakenne näyttää kaiken kaikkiaan hyvin suunnitellulta, ja aika valmiiltakin jo, hieno juttu!
Ladattu: 10/08/2017 23:45
Projekti näyttää olevan sopivan laaja ja hyvillä raiteilla. Tietokannat on toteutettu fiksusti, ja monesta moneen -yhteyskin löytyy. Ulkoasu ja monet toiminnot selkeästi vielä vaiheessa, ei niistä sen enempää.
Koodi on pääosin selkeää ja puhdasta, mikä onkin oletettavaa, kun se on selvästi kirjoitettu tsohan mallien pohjalta. Jokaisella luokalla on oma, selkeä tehtävänsä. Asiat on nimetty järkevästi, ja niistä näkee suoraan, mitä ne tarkoittavat. Funktiot eivät ole liian pitkiä, eivätkä tee ylimääräisiä asioita.
Sisennykseen voisi tosin kiinnittää huomiota. Esim. /views/recipe/recipeList.html:
<thead>
<tr>
<td>Juoma</td>
<td>Lisääjä</td>
<td>Lisäyspäivä</td>
</tr>
</thead>
Olisi siistimpi, kun kaikki sisäkkäiset elementit on erikseen sisennetty:
<thead>
<tr>
<td>Juoma</td>
<td>Lisääjä</td>
<td>Lisäyspäivä</td>
</tr>
</thead>
Myös /controllers/recipe_controller.php on paikoin oudosti sisennetty:
public static function store() {
$params = $_POST;
Kint::dump($params);
$recipe = new Recipe(array(
'author' => '1', //korjataan myöhemmin!
'name' => $params['name'],
'instructions' => $params['instructions'],
'glass' => $params['glass'],
'method' => $params['method']
));
//lisäksi käsiteltävä ainesosat
$recipe->save();
Redirect::to('/resepti/' . $recipe->id, array('message' => 'Tässä lisäämäsi uusi resepti!'));
}
Siistimpi näin:
public static function store() {
$params = $_POST;
Kint::dump($params);
$recipe = new Recipe(array(
'author' => '1', //korjataan myöhemmin!
'name' => $params['name'],
'instructions' => $params['instructions'],
'glass' => $params['glass'],
'method' => $params['method']
));
//lisäksi käsiteltävä ainesosat
$recipe->save();
Redirect::to('/resepti/' . $recipe->id, array('message' => 'Tässä lisäämäsi uusi resepti!'));
}
Monissa muissakin luokissa on sisennysongelmia, kuten /models/Recipe.php:ssa. create_tables.sql:stä puuttuu sisennykset kokonaan.
Vinkki: NetBeans korjaa sisennyksen automaattisesti painamalla shift+alt+f. Sublime Textissä voit lisätä hotkeyn toiminnolle: https://stackoverflow.com/questions/9495007/indenting-code-in-sublime-text-2
Myös sulutustyyli vaihtelee: Välillä avaavat sulkeet ovat samalla rivillä kuin funktio, välillä eivät. Esimerkkinä /models/Recipe.php:
function __construct($attributes)
{
parent::__construct($attributes);
}
Omasta mielestäni olisi luettavampaa, jos koodi näyttäisi seuraavalta:
function __construct($attributes) {
parent::__construct($attributes);
}
Tärkeintä on kuitenkin, että se noudattaisi yhtenäistä kaavaa.
Muuten ihan näpsäkkää ja luettavaa koodia, varsinkin nimeäminen on kiitettävää. Projekti selvästi edistymässä hyvällä tahdilla, ja viikko 2:n asiat näyttäisivät toimivan. Ylimääräisenä huomiona, jos tämä ei ole jo suunnitelmissa: suosittelen lisämään "lisää ainesosarivi" -toiminnon reseptien luonnin yhteyteen (käyttäjä siis voisi painaa nappia jolloin ilmestyisi uusi tyhjä rivi ainesosaa varten). Tällöin rivejä ei olisi valmiiksi jo hirveää liutaa, eivätkä ne myöskään loppuisi kesken.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.