Wątek przeniesiony 2015-09-16 20:01 z Newbie przez Shalom.

Prośba o opinię na temat kodu mojej pierwszej aplikacji.

0

Dzień Dobry,

To mój pierwszy post na forum. Chciałem prosić opinię co do kodu źródłowego mojej pierwszej aplikacji. Nie chodzi mi tutaj o jakieś dokładne sprawdzanie, ale o rzucenie okiem czy choć trochę przypomina to programowanie. Czy jest sens chwalić się takim kodem przed ewentualnym przyszłym pracodawcą? Ta aplikacja mniej więcej odzwierciedla poziom w jakim opanowałem język Java. Uświadomcie mnie jak bardzo jestem jeszcze na początku tej drogi i czy staranie się o pracę/praktykę ma sens na tym etapie. (znam jeszcze podstawy Hibernate i MySQL)

Sam program powstał z potrzeby mojego szwagra który chciał mieć coś co pomoże mu szybciej wystawić faktury dla klientów. W skrócie program potrafi generować plik excel z fakturą z wypełnionymi danymi wpisanymi w formularz aplikacji. Posiada także bazę klientów. Wszystkie dane zewnętrzne zapisywane są w plikach *.txt. Wiem już, że to nie jest idealne rozwiązanie. Nad programem nadal pracuje, ale główne założenia udało się zrealizować. Program działa.

Proszę o opinię.

Link do repozytorium:

https://github.com/ArturPalczynski/Faktura

2c2c9f2900.png

5

Rzut okiem w kod a tam takie cuda:

//funkcja któraprzyjmuje liste obiejktów customer i zwraca wiersz z jego danymi przedzielonymi #
public String getClientInfo(ArrayList<Customer> theList){
    String[] table = new String[theList.size()];
    return null;
}

Nie dość że komentarz kłamie to jeszcze nie pojmuje jaki byłby sens istnienia takiej funkcji ;]

To też dobre:

excelFile =  new File("D:/Faktura.xls");
workbook = Workbook.getWorkbook(excelFile);
workbookCopy = Workbook.createWorkbook(new File("C://Users//Gosia//Desktop//Clients.xls"), workbook);

Rozumiem że nie warto wg ciebie tych ścieżek podawać jednak gdzieś w konfiguracji? Jak postanowisz użyć tego na komputerze gdzie nie ma użytkownika "Gosia" to będziesz kompilował program drugi raz? :D

A tu: https://github.com/ArturPalczynski/Faktura/blob/master/Excel.java#L141 to mam nadzieje że nie są prawdziwe dane z peselem...

A tak poza tym to ta aplikacja raczej niewiele robi a całą "logikę" zamknąłeś w dwóch stanowczo za długich funkcjach. Poczytaj może na przykład o czymś takim jak MVC i MVP? No i nie używał designera z NetBeansa bo ssie niemiłosiernie.

0

http://znanefirmy.com/firma/396087/kamil-dziecielewski-montaz-dach.html
Dane się zgadzają : D
Lepiej szybko usuń repo kolego.

3

Proponuję przeczytać "Czysty Kod" Wujka Boba, gdyż:

  1. w ten sposób nie nazywa się metod:
 public void SaveExcel(Customer customer, JTable jtable) throws FileNotFoundException, IOException, InvalidFormatException{
     
  1. formatowanie pionowe naprawdę ma znaczenie:
 public void setName(String name){
        
        this.name = name;
        
        
    }
  1. komentarze w takim przypadku są passe:
 //funkcja któraprzyjmuje liste obiejktów customer i zwraca wiersz z jego danymi przedzielonymi #
    
    public String getClientInfo(ArrayList<Customer> theList){
   
  1. 'magic number' nie pomagają w czytaniu kodu:
 if(t.getValueAt(x, 1) == null){
                        break;
                     }

I tak dalej i tak dalej... Z innych rzeczy to to powinno być stałymi:

int initialRow = 15;
        int cellLP = 2;
        int cellTowar = 3;
        int cellCena = 12;
        int cellRabat = 15;

Takie rzeczy nie powinny istnieć:

workbookCopy = Workbook.createWorkbook(new File("C://Users//Gosia//Desktop//Clients.xls"), workbook);

ale o tym napisał już @Shalom

Pola powinny być prywatne:

Customer customer1;
    WritableWorkbook workbookCopy;
    Workbook workbook;
    WritableSheet sheetCopy;
    Sheet sheet;
    File excelFile;
    File excel;

Takie rzeczy z kodu usuwa się najlepiej od razu ponieważ jeśli za miesiąc siądziesz do aplikacji to dam sobie rękę uciąć że będziesz się zastanawiał "co autor miał na myśli" i czy to jeszcze jest potrzebne czy nie:

 //CellStyle style = wb.createCellStyle();
        //style.setWrapText(true);

Ciekaw jestem w jaki sposób w tym miejscu mogą polecieć te wyjątki :o

public void createCustomerFromTable(String[] t) throws IOException, BiffException, WriteException{
      

        this.name = t[0];
        this.sureName = t[1];
        this.address = t[2];
        this.nazwaFirmy = t[3];
        this.nip = t[4];
  
    }

W pracy często ludzie pytają mnie dlaczego tak się czepiam formatowania pionowego... No właśnie dlatego, potem zamiast spójnego kodu mamy nawalone spacji i enterów bo tak było wygodniej. NIE NIE i NIE. Formatowanie pionowe MA ZNACZENIE.

Metoda:

 public void writeExcelTable(JTable t) throws IOException, BiffException, WriteException{
     

całkowicie do poprawy. Duplikacja kodu jest bardzo bee a naprawdę widać jak łatwo i szybko można to skrócić.

Widoków nawet nie sprawdzam bo widzę że NetBeans działał ostro :)

Proponuję:

  1. Poczytać o wzorcu MVP
  2. Przeczytać czysty kod
  3. Aplikację zostawić sobie na pamiątkę ale schować i przepisać od nowa.

Ps.

/**
 * Hibernate Utility class with a convenient method to get Session Factory
 * object.
 *
 * @author Gosia
 */
public class NewHibernateUtil {

Bywasz czasem kobietą ;> ?

6

@ArturPalczynski - Kolego po pierwsze brawo, że Ci się chciało i napisałeś program, który prezentuje Twoje umiejętności. Po drugie nie słuchaj kolegów powyżej :P To znaczy zwróć uwagę na punkty, który wskazali, ale nie słuchaj rad, że masz cały kod schować do szuflady. To, że są w nim błędy wskazane przez przedmówców wcale go nie skreśla. Pokazywanie własnego kodu, który prezentuje Twój aktualny poziom wiedzy jest bardzo dobre. Każdy na początku pisał kiepski kod i robił błędy.

Oczywiście musisz mieć świadomość, że Twój kod nie jest doskonały, musisz się ciągle doszkalać. Ale najważniejsze żebyś nie przestawał pisać własnego kodu. Przesadne dążenie do doskonałości w prostej linii doprowadza do prokrastynacji, ponieważ wydaje się, że lepiej nie napisać nic niż napisać coś kiepskiego. Doprowadza to również do sytuacji, że przychodzisz na interview na programistę Java i wychodzisz na osobę, która nic nigdy w tej Javie nie programowała, ponieważ wstydzisz się pokazać co napisałeś. Jeżeli pokażesz swoje portfolio nawet kiepskie to zrobisz lepsze wrażenie niż osoba, która nie ma nic do pokazania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1