Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak powinna wyglądać 'próbka kodu'
Forum PHP.pl > Inne > Hydepark
Adi32
Witacie.

Fajna firma do której apliuję życzy sobię próbki kodu (jak z resztą spora część firm), jednak pierwszy raz na taką trafiam.
W aktualnej pracy zajmuję się rozbudową i wdrażaniem systemu CRM B2B i raz, że próbki stąd nie działałyby same w sobie, a dwa - nie bardzo mam praco wynosić cokolwiek z firmy a tymbardziej pokazywać konkurencji.

To co robie jako freelancer to zwykle przeróbki jakichś istniejących strukturalnych partyzantek które też się nie nadajć.

Moje pytanie: co w takiej sytuacji robić?

Pisać coś specialnie pod pokazanie?
Co to miałoby być?
Czego takie firmy oczekują?
Czy powinno tego być dużo? Jakaś działająca aplikacja?

Pozdrawiam.
stud3nt
Próbka kodu nie służy ocenie aplikacji, nie trzeba nic działającego wysyłać. Ma ona pokazać, że umiesz pisać prawidłowo sformatowany kod, dobrze nazywasz zmienne, używasz odpowiednich metod etc.

100-200 linijek wystarczy w zupełności, wybierz coś, o czym wiesz, że jest fajnie napisane i prezentuje Twoje umiejętności.
skowron-line
Cytat(stud3nt @ 14.03.2013, 14:30:07 ) *
Próbka kodu nie służy ocenie aplikacji, nie trzeba nic działającego wysyłać. Ma ona pokazać, że umiesz pisać prawidłowo sformatowany kod, dobrze nazywasz zmienne, używasz odpowiednich metod etc.

100-200 linijek wystarczy w zupełności, wybierz coś, o czym wiesz, że jest fajnie napisane i prezentuje Twoje umiejętności.

Większość osób na siłę coś klepie komentuje i dba o każdy detal a w codziennej pracy leci ciurkiem bez wcięć i innych ozdób. Według mnie takie wysyłanie próbki kodu jest nic nie warte
Adi32
Cytat(skowron-line @ 14.03.2013, 14:40:33 ) *
Większość osób na siłę coś klepie komentuje i dba o każdy detal a w codziennej pracy leci ciurkiem bez wcięć i innych ozdób. Według mnie takie wysyłanie próbki kodu jest nic nie warte

Prawdę mówiąc nie wyobrażam sobie pisania kodu ciurkiem bez wcięc - sam bym sobie utrudiał pracę ale ogólnie zgadzam się co do wypowiedzi.

Mam zamiar zaprezentować wspólną część kodu każdego modułu, z akcjami usuń dodaj edytuj itp. Klasę po któej dziedziczy każdy moduł i dzięki temu od razu posiada wszystke podstawowe akcje + jeden moduł. Co o tym myślicie?
skowron-line
Cały moduł jak pokażesz będzie najlepiej, wtedy pracodawca będzie mógł ocenić czy potrafisz podzielić MVC na M, V i C a to jakie akcje to już jest mało ważne. Najlepiej wyjmij cos z istniejącego projektu, a nie pisz od zera bo na siłę będziesz wymyślał zbędne kwiatki smile.gif A najlepiej pokaż tu to Ci powiemy czy się się nadajesz smile.gif
magnus
Dobrze działa na pracodawców, jak się dłubie coś swojego i trzyma to na githubie (oczywiście jako publiczne wink.gif). Z doświadczenia wiem, że nawet jak ten kod nie jest jakiejś super jakości (jak mój biggrin.gif), to robi pozytywne wrażenie (szczególnie jak jest to jakieś całościowe rozwiązanie).
Oczywiście, czym jest to mniejszy projekt, tym musi być lepiej napisany i tym większa szansa, że ktoś się w niego szczegółowo wgryzie.
Projekt(y) na githubie, czy ogólnie jakaś własna dłubanina, czy też wkład w jakiś projekt OS jest pozytywnie widziane bo pokazuje, że jesteś faktycznie programistą, a nie siedzisz przed telewizorem po odwaleniu swojej zmiany w tesco czy innej korporacji a nagle wpadłeś na pomysł zostania programistą smile.gif
Także, że nie wstydzisz się pokazać swojego kodu. No i jest to w jakimś stopniu gwarancja, że to faktycznie twój autorski kod a nie copy-paste cudzego.
Oczywiście akcja typu sforkowanie cudzego projektu i zrobienie kilku kosmetycznych poprawek raczej nie zagwarantuje powodzenia smile.gif

Poza wszystkim jest to dość wygodne - wrzucasz linka i niech sobie patrzą, nie musisz się zastanawiać ile wysłać, co wyciąć, co zostawić itp.
Adi32
Przyjrzałem się klasie do tych akcji o których pisałem i to raczej nie przejdzie...
(2 posty niżej wrzuciłem w wygodniejszy sposócool.gif
Pisanie czegoś na nowo też raczej mija się z celem...
!*!
Wrzucaj na http://pastebin.com/ lub podobne wink.gif

Cytat
Jak powinna wyglądać 'próbka kodu', Przy kandydowaniu na programistę PHP

Dobre formatowanie, trzymaj się PSR-* + dokumentacja.
Adi32
Dzięki !*!
http://pastebin.com/B63RbzkG
Sephirus
Ogólnie nie wygląda to źle - trochę mnie raziły statyczne odwołania do Message czy currentUser ale to jeszcze przejdzie.

Nie wnikam w sam kod ale jeśli chodzi o prezentację to masz niekompletne opisy metod:

  1. /**
  2.   * Metoda służy do zapisania większej ilość rekodrów
  3.   */
  4. public function saveFromArray($array, $mapper = array(),$defaults = array()) {
  5. // ...
  6. }


Dla takiego laika jak ja - nieznającego się w tej klasie zupełnie nie wiem co podstawic pod $mapper co pod $defaults itd... Dodatkowo nie wiem czego się spodziewać na wyjściu - co zwróci funkcja

  1. /**
  2.   * Metoda służy do zapisania większej ilość rekodrów
  3.   * @param array $array Opis ...
  4.   * @param array $mapper Opis ...
  5.   * @param array $defaults Opis ...
  6.   * @return typ...
  7.   */
  8. public function saveFromArray($array, $mapper = array(),$defaults = array()) {
  9. // ...
  10. }


Wiem wiem - czepiam się - ale kod wygląda ładnie i przydałby mu się taki opis.
Adi32
Opisy były robione pode mnie. Tak właśnie się obawiałem, że nie minie mnie rozwinięcie ich opisów.
Nie wiem dlaczego rażące są odwołania do metod statycznych, mnie wydało się to lepsze niż globalsy czy instancje...
Może zrobić tak jak z instancją połączenia do bazy danych? Na stałe w obiekt i siedzi.
ano
Pomijając sam kod to tego "haos", "zamierzam" w głównym opisie, mogą Ci nie wybaczyć...

Oprócz tego, że wszystko wrzucone do jednego worka to nie jest źle. Na pewno ponad przeciętność ;-)
Pilsener
Moim zdaniem należy zacząć od pojemnika na próbki:


Każdą próbkę należy wyciąć starannie i opisać dokładnie kiedy, skąd i w jakich okolicznościach została pobrana.

Pamiętajmy też o tak zwanej "próbce kontrolnej"

Wszystkie próbki dobrze obłożyć suchym lodem (by zachowały świeżość) przy pomocy takiego np. pojemnika:


Mając tak przygotowane próbki śmiało zgłoś się do HRu! thumbsupsmileyanim.gif
skowron-line
Policz ile w tym fragmencie kodu użyłeś $_SESSION['order'][$this->name]['order'], nie uważasz że można by to skrócić i zapisać to do zmiennej, chyba że na siłe robisz wymaganą liczbę lini smile.gif
  1. if (!$_SESSION['order'][$this->name]['order'] or $_SESSION['order'][$this->module]['how'] or $_REQUEST['order']) {
  2.  
  3. if (in_array('position', $this->columnList) or in_array($_REQUEST['order'], $this->columnList)) {
  4.  
  5. if ($_REQUEST['order'] and in_array($_REQUEST['order'], $this->columnList)) {
  6. $_SESSION['order'][$this->name]['order'] = $_REQUEST['order'];
  7. } else if (!$_SESSION['order'][$this->name]['order']) {
  8. $_SESSION['order'][$this->name]['order'] = 'position';
  9. }
  10.  
  11. if ($_REQUEST['how'] AND $_SESSION['order'][$this->name]['order']) {
  12. $_SESSION['order'][$this->name]['how'] = $_REQUEST['how'];
  13. } else if (!$_SESSION['order'][$this->name]['how']) {
  14. $_SESSION['order'][$this->name]['how'] = 'ASC';
  15. }
  16.  
  17. if ($_SESSION['order'][$this->name]['how']) {
  18. $order = ' ORDER BY ' . $_SESSION['order'][$this->name]['order'] . ' ' . $_SESSION['order'][$this->name]['how'];
  19. }
  20.  
  21. } else {
  22. unset($order);
  23. }
  24. } else {
  25. if ($_SESSION['order'][$this->name]['how'])
  26. $order = ' ORDER BY ' . $_SESSION['order'][$this->name]['order'] . ' ' . $_SESSION['order'][$this->name]['how'];
  27. }


  1. /**
  2.   * Wstępna metoda służąca do zapisywania i aktualizowania elementów w bazie
  3.   */
  4. public function save() {
  5.  
  6. global $config;

global questionmark.gif? Serio questionmark.gif
  1. public function getView() {
  2.  
  3. $this->process();
  4.  
  5. if (class_exists($_REQUEST['action'].'View')) {
  6. $viewClassName = $_REQUEST['action'].'View';
  7. $viewFocus = new $viewClassName($this);
  8.  
  9. $viewFocus->display();
  10. } else {
  11. echo 'Nie odnaleziono widoku'; //throw new Exception('Nie odnaleziono widoku');
  12. }
  13.  
  14. }

Według mnie kiszka panie.
- Pomieszanie z poplątaniem baza danych z widokiem
- Komentarze (sensowne) a raczej ich brak
- Nawiasy
- W metodzie delete nie sprawdzasz parametru (nigdzie nie sprawdzasz)
Adi32
@skowron-line - Wszystko masz rację i dzięki za komentarz. To dlatego, że to jest w trakcie rozwoju zaczęte kiedyś tam... Odkąd zaczęło działać rozwijane tylko w razie potrzeby.

- $global - raz może być... A na poważnie... ...na szybko...
- komentarze - oczywiście do zrobienia
- co nawiasy?
- Parametr w delete - sprawdzam, w klasach które dziedziczą
- wszystko w jednej klasie - w tym przypadku czytelność jest, było więcej ale zacząłem rozdzielać sukcesywnie. Lepiej to robić powoli i z planem bo się można pogubić.
- $_SESSION['order'][$this->name]['order'] - a to chyba nawet nie działa tak jak powinno

Zrobiłem niedawno aktualizację, klasa sama rozpoznaje relacje i posiada akcje dodawania usuwania i edycji powiązań relacyjnych 1:n i n:n.
Wystarczy w pliku z definicjami modułu dać tablicę np:

  1. public $relationships = array (
  2. 'products_categories' => array (
  3. 'relationship_type' => 'many-to-many',
  4. 'left_table' => 'product',
  5. 'left_column' => 'id',
  6. 'right_table' => 'category',
  7. 'right_column' => 'id',
  8. 'connection_table' => 'products_categories',
  9. 'left_key' => 'product_id',
  10. 'right_key' => 'category_id',
  11. ),
  12. );

I tak się zastanawiam czy by tego nie sprezentować... ale musiałbym poukładać w którymś module żeby było coś widać :/

Edit: najważniejsze - faktycznie tam są elementy które są żywcem z widoku ale tylko tymczasowo. Musze zrobić ład z widokami ale może faktycznie "na razie" to wywale...

Cytat(ano @ 16.03.2013, 22:17:35 ) *
Pomijając sam kod to tego "haos", "zamierzam" w głównym opisie, mogą Ci nie wybaczyć...

Starałem się jakoś usprawiedliwić fakt, że sporo różnych rzeczy znajduje się w jednym worku. Czemu mogą nie wybaczyć?
ano
Ponieważ "haos" pisze się "chaos", a "zamirzam" > "zamierzam"...
Adi32
Cytat(ano @ 17.03.2013, 12:19:59 ) *
Ponieważ "haos" pisze się "chaos", a "zamirzam" > "zamierzam"...

fuck... Zamierzam to literówka a z tym chaosem byłem pewien że pisze się przez samo h :/ Nie wiem skąd mi się to ubzdurało...
Crozin
Adi32: Jaką wartość według Ciebie będzie miała teraz ta "próbka kodu"? Przecież ten fragment ma sobą reprezentować Twoje umiejętności, nawyki, sposób tworzenia kodu, a nie efekt wspólnej pracy forum. Jeżeli chciałbyś dowiedzieć się czy Twój kod zawiera jakieś błędy (projektowe, stylistyczne itp. itd.) zapytaj, na pewno kilka osób wypowie się na ten temat, ale nie podsyłaj tego później swojemu pracodawcy, bo jest to przecież zwyczajne okłamywanie go.

PS. W języku polskim brakuje czasami słówek, ale na "fuck" mamy ładny odpowiednik - kurwa, na pewno słyszałeś. wink.gif
Adi32
Cytat(Crozin @ 17.03.2013, 12:44:20 ) *
Adi32: Jaką wartość według Ciebie będzie miała teraz ta "próbka kodu"? Przecież ten fragment ma sobą reprezentować Twoje umiejętności, nawyki, sposób tworzenia kodu, a nie efekt wspólnej pracy forum. Jeżeli chciałbyś dowiedzieć się czy Twój kod zawiera jakieś błędy (projektowe, stylistyczne itp. itd.) zapytaj, na pewno kilka osób wypowie się na ten temat, ale nie podsyłaj tego później swojemu pracodawcy, bo jest to przecież zwyczajne okłamywanie go.

PS. W języku polskim brakuje czasami słówek, ale na "fuck" mamy ładny odpowiednik - kurwa, na pewno słyszałeś. wink.gif

Przywykłem do nie rzucania kurwami na forach aby nikogo nie obrazić i nie łapać ostrzeżeń. fuck wydało mi się łagodniejszym odpowiednikiem, który odpowiednio odda to co aktualnie odczułem - wtopa, o rzesz kurwa albo krócej - fuck :/.

skowron-line zaproponował wrzucenie kodu. Chciałem jedynie poznać zdanie forumowiczów, czy się nadaje (wstępnie chciałem dowiedzieć się ogólnie czego oczekują pracodawcy).

Zaprezentowanie tego kodu moim zdaniem nie będzie oszustwem. Nie wiem dlaczego tak uważasz - ten kod wciąż jest mój, o jego poplątaniu (częściowe wtrącenie zarządzania widokiem) wiedziałem. Dowiedziałem się, że ogólnie się nadaje. Komentarze w każdym razie miałem dopisać. Mógłbyś rozwinąć/uzasadnić swoją wypowiedź?

Dodam jeszcze, że nie jest to efekt wspólnej pracy forum, nie pytam przecież jak napisać kod tylko czy to sie nadaje, czy to lepiej wywalić czy tamto dodać...
!*!
Cytat
Przywykłem do nie rzucania kurwami na forach aby nikogo nie obrazić i nie łapać ostrzeżeń. fuck wydało mi się łagodniejszym odpowiednikiem, który odpowiednio odda to co aktualnie odczułem - wtopa, o rzesz kurwa albo krócej - fuck :/.


Jak pisząc po polsku, używasz obcych wyrazów, wychodzisz na kretyna. wink.gif

Cytat
Zaprezentowanie tego kodu moim zdaniem nie będzie oszustwem. Nie wiem dlaczego tak uważasz - ten kod wciąż jest mój, o jego poplątaniu (częściowe wtrącenie zarządzania widokiem) wiedziałem. Dowiedziałem się, że ogólnie się nadaje. Komentarze w każdym razie miałem dopisać. Mógłbyś rozwinąć/uzasadnić swoją wypowiedź?

Tu chodzi o sam fakt. Namaluj kotka, My Ci powiemy żebyś domalował wąsy, a kotek z wąsami zejdzie za milion $, tylko dlatego że je ma, ale to nie Ty wpadłeś na pomysł ich domalowania.
Crozin
Nie chcesz rzucać kurwami, a jedną rzuciłeś tylko w innym, powszechnie znanym języku. Chociaż faktycznie "fuck" ma słabszy wydźwięk - przynajmniej dla mnie. Przyczepiłem się, bo nasz język ma naprawdę bogaty asortyment mniej lub bardziej dosadnych wulgaryzmów. Jednak porzućmy już ten nieistotny temat, na przyszłość jedynie: cholera. wink.gif

Cytat
Dodam jeszcze, że nie jest to efekt wspólnej pracy forum, nie pytam przecież jak napisać kod tylko czy to sie nadaje, czy to lepiej wywalić czy tamto dodać...
Właśnie to miałem na myśli pisząc o wspólnej pracy forum. Taka próbka ma zaprezentować przeciętny kod jaki wychodzi spod Twoich palców. Ani jakiś śmieciowy, odpalany raz na pół roku, ani jakiś dopracowany i dopieszczony specjalnie pod prezentację. Innymi słowy, taki jaki będziesz na co dzień klepać w pracy, gdzie nikt nie powie Ci czy to lepiej wywalić, czy tamto dodać. Może określenie "oszustwo" było nieco za mocne, ale na pewno jest to pewnego rodzaju wprowadzenie w błąd swojego potencjalnego pracodawcę.

Zaś co do samej próbki. Najlepiej gdy zamiast jakiejś pojedynczej klasy możesz podlinkować jakiś mały projekt, moduł projektu czy najlepiej jakąś bibliotekę. Tam widać czy potrafisz organizować swój projekt, czy utrzymujesz jako taki porządek. Daje to pełniejszy obraz, szczególnie jeżeli chodzi o OOP.
Adi32
Cytat(!*! @ 17.03.2013, 13:22:56 ) *
Jak pisząc po polsku, używasz obcych wyrazów, wychodzisz na kretyna. ;)

Byłem przygotowany na tego typu posty z Twojej strony smile.gif
Jednak przyznaje - mogłem użyć polskiego odpowiednika.
Cytat(!*! @ 17.03.2013, 13:22:56 ) *
Tu chodzi o sam fakt. Namaluj kotka, My Ci powiemy żebyś domalował wąsy, a kotek z wąsami zejdzie za milion $, tylko dlatego że je ma, ale to nie Ty wpadłeś na pomysł ich domalowania.

To by się zgadzało, jednak ja prezentuje swoje produkty. Nie pytam co warto byłoby "domalować".
Może faktycznie temat posunął się za daleko. Z całą pewnością nie chciałbym "oszukać" nikogo a tymbardziej przyszłego pracodawcy. Zresztą wcześniej czy później obróciłoby się to przeciwko mnie.

Cytat(Crozin @ 17.03.2013, 13:32:46 ) *
Nie chcesz rzucać kurwami, a jedną rzuciłeś tylko w innym, powszechnie znanym języku. Chociaż faktycznie "fuck" ma słabszy wydźwięk - przynajmniej dla mnie. Przyczepiłem się, bo nasz język ma naprawdę bogaty asortyment mniej lub bardziej dosadnych wulgaryzmów. Jednak porzućmy już ten nieistotny temat, na przyszłość jedynie: cholera. ;)

Gdybym się w ten sposób zastanowił, na pewno użyłbym polskiego odpowiednika. Przeważało w tedy odczucie wstydu spowodowane walnięciem błędu ortograficznego w czymś dość ważnym.

Cytat(Crozin @ 17.03.2013, 13:32:46 ) *
Właśnie to miałem na myśli pisząc o wspólnej pracy forum. Taka próbka ma zaprezentować przeciętny kod jaki wychodzi spod Twoich palców. Ani jakiś śmieciowy, odpalany raz na pół roku, ani jakiś dopracowany i dopieszczony specjalnie pod prezentację. Innymi słowy, taki jaki będziesz na co dzień klepać w pracy, gdzie nikt nie powie Ci czy to lepiej wywalić, czy tamto dodać. Może określenie "oszustwo" było nieco za mocne, ale na pewno jest to pewnego rodzaju wprowadzenie w błąd swojego potencjalnego pracodawcę.

Zawsze wolę się do wszystkiego jak najdokładniej przygotować. Też pomyślałem, żeby nie przedobrzyć bo wyjdzie sztucznie.
Jednak nie o to mi chodziło. Jak już pisałem, chciałem poznać ogólne oczekiwania pracodawcy, a jak już wrzuciłem kod to dodatkowo doszło pytanie: 'czy się nadaje'.

Cytat(Crozin @ 17.03.2013, 13:32:46 ) *
Zaś co do samej próbki. Najlepiej gdy zamiast jakiejś pojedynczej klasy możesz podlinkować jakiś mały projekt, moduł projektu czy najlepiej jakąś bibliotekę. Tam widać czy potrafisz organizować swój projekt, czy utrzymujesz jako taki porządek. Daje to pełniejszy obraz, szczególnie jeżeli chodzi o OOP.

I tak też postanowiłem. Udokumentuje ładnie kod, oddziele widok od imitacji modelu, dodam kilka rzeczy które zrobiłem wczoraj i zaprezentuję całość.
!*!
Cytat(Adi32 @ 17.03.2013, 13:47:14 ) *
Byłem przygotowany na tego typu posty z Twojej strony smile.gif

Ciszej, bo jeszcze ktoś pomyśli że jestem wredny i przewidywalny wink.gif
Adi32
Cytat(!*! @ 17.03.2013, 13:52:59 ) *
Ciszej, bo jeszcze ktoś pomyśli że jestem wredny i przewidywalny ;)

Myślę, że już wszyscy wiedzą...
!*!
Cytat(Adi32 @ 17.03.2013, 13:54:45 ) *
Myślę, że już wszyscy wiedzą...

Szlag... ohno-smiley.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.