Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak powinna wyglądać 'próbka kodu', Przy kandydowaniu na programistę PHP
Adi32
post
Post #1





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
stud3nt
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 7
Dołączył: 6.01.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Adi32
post
Post #4





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Adi32 14.03.2013, 14:50:14
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif) A najlepiej pokaż tu to Ci powiemy czy się się nadajesz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Theqos
post
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 8
Dołączył: 5.12.2008

Ostrzeżenie: (0%)
-----


http://forum.php.pl/index.php?showtopic=168262
Go to the top of the page
+Quote Post
magnus
post
Post #7





Grupa: Zarejestrowani
Postów: 99
Pomógł: 15
Dołączył: 15.11.2007
Skąd: Nowogród Bobrz.

Ostrzeżenie: (0%)
-----


Dobrze działa na pracodawców, jak się dłubie coś swojego i trzyma to na githubie (oczywiście jako publiczne (IMG:style_emoticons/default/wink.gif) ). Z doświadczenia wiem, że nawet jak ten kod nie jest jakiejś super jakości (jak mój (IMG:style_emoticons/default/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ą (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Adi32
post
Post #8





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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ó(IMG:style_emoticons/default/cool.gif)
Pisanie czegoś na nowo też raczej mija się z celem...

Ten post edytował Adi32 15.03.2013, 14:06:41
Go to the top of the page
+Quote Post
!*!
post
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Wrzucaj na http://pastebin.com/ lub podobne (IMG:style_emoticons/default/wink.gif)

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

Dobre formatowanie, trzymaj się PSR-* + dokumentacja.
Go to the top of the page
+Quote Post
Adi32
post
Post #10





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Dzięki !*!
http://pastebin.com/B63RbzkG
Go to the top of the page
+Quote Post
Sephirus
post
Post #11





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Adi32
post
Post #12





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
ano
post
Post #13





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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ść ;-)
Go to the top of the page
+Quote Post
Pilsener
post
Post #14





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Moim zdaniem należy zacząć od pojemnika na próbki:
(IMG:http://www.bionovo.pl/images/zdjecia/pojemniki_z_polipropylenu_o_poj_180ml.jpg)

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:
(IMG:http://www.bionovo.pl/images/zdjecia/pojemnik_chlodniczy_Benchtop.jpg)

Mając tak przygotowane próbki śmiało zgłoś się do HRu! (IMG:style_emoticons/default/thumbsupsmileyanim.gif)
Go to the top of the page
+Quote Post
skowron-line
post
Post #15





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/questionmark.gif) ? Serio (IMG:style_emoticons/default/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)
Go to the top of the page
+Quote Post
Adi32
post
Post #16





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


@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ć?

Ten post edytował Adi32 16.03.2013, 23:47:49
Go to the top of the page
+Quote Post
ano
post
Post #17





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Ponieważ "haos" pisze się "chaos", a "zamirzam" > "zamierzam"...
Go to the top of the page
+Quote Post
Adi32
post
Post #18





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Crozin
post
Post #19





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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ś. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Adi32
post
Post #20





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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ś. (IMG:style_emoticons/default/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ć...

Ten post edytował Adi32 17.03.2013, 13:04:41
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 17:48