Death code - kilka problemów

0

Siema, piszę z prośbą o pomoc w kilku problemach :P

1.DEATH CODE
Pobiera mi wartość jaką podał użytkownik w formularzu, jednak gdy nic nie poda to się wysypuje, i rozkminiłem, że jak nie będzie nic podanego to ustawi tam np na 1. Gdy to wszystko wykonam na STRINGU``

 if(MinPrice.equals("")){
                MinPrice="1";            
            }

Działa jak należy, jednak chciałbym żeby to było zrobione porządnie.

  Integer MinPrice= Integer.parseInt(request.getParameter("MinPrice"));
             if (MinPrice!= null ) {
            	 MinPrice= Integer.parseInt(request.getParameter("MinPrice"));
            	} else {
            	  MinPrice= 1;
            	}
         

MinPrice=1; jest oznaczona jako death code no i oczywiście nie śmiga jak nie podam nic w foGdy ustawie Integer MinPrice na nullrmularzu

Problem nr 2 - dodawanie zdjęć

  	Part part1 = request.getPart("Image1");
   	String fileName1 = extractFileName(part1);
   	part1.write(savePath + File.separator + fileName1);

   	Part part2 = request.getPart("Image2");
   	String fileName2 = extractFileName(part2);
   	part1.write(savePath + File.separator + fileName2);

Następnie zapistuję link do bazy

statement.setString(1, Name);
 String filePath = "Images" + File.separator + fileName;
            statement.setString(2, filePath);

            String filePath1 = "Images" + File.separator + fileName1;
            statement.setString(3, filePath1);

W przypadku gdy w formularzu nie wybiorę żadnego zdjęcia, wywala mi komunikat o ODMOWIE DOSTĘPU, problem trochę podobny do tego powyżej, bo w przypadku nulla trzaby by ustawić coś innego, jednak nie wiem jak za to zabrać

2

Polecam czytać dokumentację Javy zanim pobiegniesz na forum. Integer::parseInt nie zwraca nigdy null. https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)

Druga sprawa założę się że twoje IDE napisało czemu ten kod jest dead. Ale jak zwykle nie chciało się przetłumaczyć i zrozumieć :P

Trzecia sprawa to kod MinPrice.equals("") to też kuriozum bo porównujesz String z Integer. (Nie nazywaj obiektów z wielkiej litery)!!!

Czwarta sprawa to Nullem może być request::getParameter ale tego już nie sprawdzasz :P

0
Trzeźwy Szczur napisał(a):

Gdy to wszystko wykonam na STRINGU``

 if(MinPrice.equals("")){
            	MinPrice="1";           	
            }

Tutaj nie używałm inta, tylko stringa......jednak nie wrzuciłem tego na początku ;p
String MinPrice= request.getParameter("MinPrice");

Stworzyłem coś takiego

       Integer MinPrice= Integer.parseInt(request.getParameter("MinPrice"));
            if (MinPrice!= 0 ) {
            	MinPrice= Integer.parseInt(request.getParameter("MinPrice"));
               } else {
            	   MinPrice= 1;
               }
           

Jednak nadal gdy nie wprowadzę wartości to wyrzuca java.lang.NumberFormatException: For input string: "".......

Zrobiłem to tak i śmiga...... tylko czy tak może być/czy to jest poprawne ?

  int MinPrice= 0;
            try{
            	MinPrice= Integer.parseInt(request.getParameter("MinPrice"));
            } catch(NumberFormatException e) {
            	
            	MinPrice=1;
            }
0

Wersja z łapaniem wyjątku już ma sens. To wcześniejsze z dwoma parseInt skasuj natychmiast, żeby nie skażać internetu.

Ogólnie zastanów się (Najlepiej napisz testy jednostkowe):

  1. Co się stanie gdy nie podasz parametru "MinPrice"? (Jak zachowa się Integer::parseInt dla null, może da sobie radę?)
  2. Czy gdy nie podasz parametru, a podasz parametr=1 to dla Ciebie to są te same przypadki biznesowe? Z kodu wynika, że tak.
  3. Gdy parametr jest nie liczbą to jaką wartość ma mieć MinPrice? 1 czy 0? Jeżeli 1 to po co przypisujesz na początku wartość 0? Żeby wszystkich zmylić?
  4. Nie nazywaj obiektów z wielkiej litery !!!
1

Eee tam, użyj optionala:

Integer minPrice = Optional.ofNullable(request.getParameter("MinPrice"))
					.map(Integer::parseInt)
					.orElse(1);

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