• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JAVA podstawy/ lepsze rozwiązanie/ lepszy kod

Object Storage Arubacloud
0 głosów
181 wizyt
pytanie zadane 20 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
edycja 20 października 2018 przez Arkadiusz Waluk

Witajcie

powtarzam Javę w przyspieszonym tempie, czyli robię po jednym rozdziale dziennie.

 

Stworzyłem coś takiego. Niby działa, ale jakoś ułomnie to wygląda.

Ma ktoś lepszy pomysł? Bardziej sexy kod?

import java.util.Scanner;

public class Gra {
    
    public static void main(String[] args){
        
        int a=17;
        int takeOneInt=0;
        
        
        
        while(a!=takeOneInt){
        
        System.out.println("podaj liczbe");
        
        Scanner scanner= new Scanner(System.in);
        
             takeOneInt= scanner.nextInt();
        
            
             if (takeOneInt<a)
                
                System.out.println("liczba za mala");
                
            else if (takeOneInt>a)
                
            System.out.println("liczba jest za duza");
                
            }
            
            System.out.println("Brawo! Zgadles, liczba wynosi "+a);
        
        
        
}}
komentarz 20 października 2018 przez Aisekai Nałogowiec (42,190 p.)
Kod w znaczniki umieść.
komentarz 20 października 2018 przez MarcinZielony Użytkownik (710 p.)
Dobra uwaga. Nie wiedziałem jak.

2 odpowiedzi

+1 głos
odpowiedź 20 października 2018 przez RafalS VIP (122,820 p.)
Jedyne co jest do poprawy to wywalenie inicjacji scanera przed petle, nie ma sensu tworzyc go i niszczyć caly czas.

No i nazwy zmiennych. Albo za krótkie - a, albo dlugie ale dezinformujace - takeOneInt. Ta druga odpowiada za pobieranie i zgadywanie. Czemu nie nazwiesz jej currentGuess, albo userGuess.

Poza tym nie ma sie do czego przyczepić bo ciezko napisac inaczej cos tak prostego.
komentarz 20 października 2018 przez MarcinZielony Użytkownik (710 p.)
Dzięki za odpowiedź.

Z inicjacją scannera to fakt.

Odnosnie zmiennych, to na moje potrzeby, ale w sumie racja- lepiej wyrabiać nawyki.

 

Pytanie brzmi, czy można coś zrobić z:

int takeOneInt=0;

czy da się bez przypisania? Żeby tylko zainicjować.
1
komentarz 20 października 2018 przez RafalS VIP (122,820 p.)

Nie możesz bo niżej wykorzystujesz ją w porównaniu:

a!=takeOneInt

Nie możesz porównywać niezainicjowanej zmiennej.

komentarz 20 października 2018 przez MarcinZielony Użytkownik (710 p.)
Ok. Dzięki.
0 głosów
odpowiedź 20 października 2018 przez Aisekai Nałogowiec (42,190 p.)

Co znaczy "bardziej sexy kod"? Krócej? Z możliwością przyszłościowego rozwoju? 

Przede wszystkim, nie potrzebne Ci tworzenie nowego skanera za każdym obiegiem pętli. Oczywiście, że dałoby się to rozbić na różne klasy, choćby cały kod odpowiedzialny za logikę przenieść do osobnej klasy i w main zrobić

new Game().start();

Tylko "problem" jest taki, że sam program jest bardzo krótki, a im krótszy tym mniej rzeczy można poprawić. Ale:

1. Zmiana nazwy klasy na angielskojęzyczną - używanie angielskiego nazewnictwa.

2. Zmieniłbym nazwę takeOneInt - nazwa charakterystyczna dla funkcji - na np userGuess. 

3. Zmienną "a" możesz wylosować, zamiast na sztywno ją ustalać. Wtedy do zmiennej userGuess możesz przypisać wartość a+1, albo użyć pętli do-while zamiast while. Ogólnie zmienną "a" poleciłbym zmienić nazwę. 

4. Możesz sformatować kod. "}}" na końcu nie wygląda dobrze. Ogólnie pełno pustych linii, których nie powinno być. 

komentarz 20 października 2018 przez MarcinZielony Użytkownik (710 p.)
Dzięki za odpowiedź.

1) Ok

2) Ok (nie znam norm komercyjnych)

3) Fakt

4) Ok. Estetyka.

 

Wszystko da się zrobic lepiej. O to mi chodziło. Pozdrawiam
komentarz 20 października 2018 przez MarcinZielony Użytkownik (710 p.)

Odnosnie zastosowania klas, to to za tydzien. Tak Java jest obiektowa, ale rozpoczecie od obiektówki nie jest naturalnym prcesem nauki/ przypominania/ utrwalania/ wyrabiania nawyku.

komentarz 20 października 2018 przez Aisekai Nałogowiec (42,190 p.)
Wiem, że nie powinno się od razu rozpoczynać nauki od obiektówki gdy się dopiero podstawy zaczyna, ale pytałeś o to, czy da się to zrobić "bardziej sexy"

 

Edit: Nazwy powinny mówić co do czego służy. Do tego jest kilka konwencji do których powinno się stosować tworząc nazwy, takie jak np. cammelCase zmiennych/funkcji, czy rozpoczynanie nazw funkcji od czasowników. Dlatego też, zmienne nie powinny zaczynać się o czasowników.
komentarz 20 października 2018 przez MarcinZielony Użytkownik (710 p.)
Zgadza się :)
komentarz 21 października 2018 przez kejm_ Bywalec (2,310 p.)

A wie ktoś może jakie zasady obowiązują w nazewnictwie "package" ?

z tego co wiem pisane są małymi literami, oddzielone od siebie kropkami w momencie zejścia niżej w strukturze.

Jakie właściwie panują dogmaty nazewnictwa paczek w programowaniu komercyjnym ?

komentarz 21 października 2018 przez MarcinZielony Użytkownik (710 p.)
Myślę, że za dużo osób nie ma czasu na referaty, więc polecam samemu poczytać.

https://helion.pl/ksiazki/czysty-kod-podrecznik-dobrego-programisty-robert-c-martin,czykov.htm#format/d

Pozdrawiam

Podobne pytania

0 głosów
6 odpowiedzi 4,681 wizyt
pytanie zadane 28 września 2016 w Java przez timati Bywalec (2,060 p.)
0 głosów
5 odpowiedzi 3,581 wizyt
pytanie zadane 20 lipca 2015 w Java przez NTXFN Gaduła (3,430 p.)
0 głosów
1 odpowiedź 265 wizyt
pytanie zadane 6 lipca 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...