Prozba o ocene kodu.

0

Czesc,

Checialbym was prosic o ocene kodu mojego programu. W sensie co robie dobrze a co zle, jestem swiadom, ze wiecej bedzie tego zlego iz jestem troche noobem
;), ale pomyslalem, ze warto dac sie wypowiedziec innym.

OK program nosi nazwe MyWiFi i jest to narzedzie do przeprowadzania rekonesansu w sieci wifi oraz znajdowaniu luk w znalezionych hostach jak i nie tylko,
na chwile obecna dzialaja tylko 2 ( oraz skanowanie portow w vulns_scan ale tak srednio z tym jest ) moduly ale bedzie wincyj. Jest to moj pierwszy projekt.

GIT: https://github.com/blackom412/MyWiFi/

1

Ja w sumie mam tylko kilka użytkowych pierdółek z punktu użytkownika i kogoś kto miałby usiąść do takiego kodu. Bo bibliotek nie znam, więc nie czuję abym mógł się wypowiadać na temat merytoryki :).

  1. Prosta konwencja, w Pythonie zaczyna się od def main(): który jest zaraz po importach. Następnie wywołuje się go po wczytaniu wszystkich funkcji na końcu. if __name__ == "__main__": i w nowej linii: main()
  2. Interfejs graficzny. Wiem że wielu się burzy "jak można używać interfejsu graficznego". Ale niestety świat okienkowy, coś ma być dla ludzi, musi mieć cholerne okienko - chyba że robisz dla siebie :).
    Oczywiście to tylko porada, nie błąd, czy ocena. Po prostu aplikacja nie przeżyje jeśli nie będzie miała okienka bo użytkownicy już tacy są.
  3. Wszystko przechodzi przez porównywanie równości w string'ach. "AAA" != "aaa" więc dla wpisywanych komend dodaj lower, bo ktoś kliknie shift i nie będzie mu się chciało zmieniać wielkości liter, a przez to nie wykryjesz komendy, zwłaszcza że inputy są krótkie z konsoli. I zawsze jak w przypadku hosts_scan powinieneś pobierać tylko potrzebny ci zakres od początku, bo pisząc "exit vulns_scan" nie wykona się nic. Co więcej, obsługę input'u powinieneś zawrzeć w słowniku z lambdami, co zwiększy czytelność kodu i zaoszczędzi ci wiele pisania. Zamiast dodawać elif i czynności zagnieżdzone, dodajesz wpis w słowniku i wszystko musi działać, kolejne polecenia dla komendy głównej sprawdzasz w funkcji jeśli nie będzie to None :).
    Przykład:
choices = {"exit": (lambda: exit_funct), 
               "vulns_scan": (lambda: vulns_scan_funct)}
for input in command_line.split()[0]
     if input in choices:
         first_word = len(input)
         choices.get(input[:first_word])(command_line.split()[1:] if len(command_line.split() > 1 else None)

Oczywiście da się to zrobić czytelniej i jeszcze trochę lepiej, ale pozostawiam to tobie :D.
Może nie jest to jakiś nie wiadomo jaki optymalizer, ale szybko pozwala dodawać kolejne funkcje, jedyną kontrolką w funkcjach przy definicji którą musisz dać do takiego wywołania to def func(Command_line_list):
4. Ale duży + za czytelność kodu, pomimo że to python2 i nie ma format'u, ale wszystko jest jasne, bibliotek nie znam więc merytoryki funkcji niestety nie ocenię, mogę tylko się wypowiedzieć na tematy o których wiem cokolwiek :P.

  1. Pomysł fajny, jeśli będziesz kontynuować daj znać o postępach :D.

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