Wpis z mikrobloga

#programowanie #naukaprogramowania
Mirki ukończyłem alfa-alfa wersję mojego generatora list czytających lekcje i śpiewających psalmy w kościele ( ( ͡° ͜ʖ ͡°) ). Napisany w #python . Wdzięczny byłbym za wytknięcie błędów, które popełniłem. Na poziomie konstrukcji, sposobu podejścia, użycia obiektowości i takie tam. To mój pierwszy skrypt >30 linii i pierwszy obiektowy programik w pytongu, więc będzie ich raczej sporo.


http://pastebin.com/rq9FafCT
  • 38
@dzien_dobry: nie no - wszystko od początku leciało w otwarte repo. Nie było to zbyt sprytne, bo do gita dopiero się przyzwyczajam, ale comittowałem dość często. A chciałbym uniknąć wpuszczania swoich danych na wypoke, dlatego rzuciłem pastem :)
@Fitoplankton:

-- linia 64 (i pewnie kilka innych powiązanych).

for person in self.list:
Nadpisujesz Pythonową wewnętrzną nazwę list. Zalecenie jest, by w takich przypadkach używać podkreślnika na końcu (czyli list_). Nawet Pastebin podświetlił to list na zielono (nazwa wewnętrzna).

Teoretycznie to jest atrybut w klasie… no ale lepiej wystrzegać się czegoś takiego, bo potem możesz się nadziać na jakieś magiczne problemy.

-- linia 36

except FileNotFoundError:
A co jak
@morsik: albo @lukasz1985m: co się trudzicie ludzie. Zrobi pull requesta to dostanie feedback. W komentarzach na wykopie będziecie to miesiąc przeglądać i oceniać.

@Fitoplankton jak masz problem z anonimowoscią do stwórz osobne konto. Przecież jest za free. I proszę nie mów, ze angielski twój słaby bo polski też.
@morsik: z tą listą to rzeczywiście dorzuciłem, dzięki. Podobnie z brakiem uprawnień, gdzieś mi kołatnęło, ale zignorowałem to. Choć problem z uprawnieniami nie powinien wystąpić w normalnym użytkowaniu, to jednak słabo, że go nie zawarłem, dzięki x2 :)
@Fitoplankton: 1. Github, a nie jakieś pastebin. Pastebin służy do paru linijek, logów, czy coś w ten deseń
2. Jak uruchamiasz to leci:
"SyntaxError: Non-UTF-8 code starting with '\xb9' in file prog.py on line 115, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details"
A co do kodu, to bym lepiej przmyślał pare rzeczy. Na poziomie listy raczej bym operował obiektem 'wierzacym', i tylko takim obiektem bym zarzadzal (czyli prototyp addnew
@Fitoplankton:
1. Stałe w klasie Attribute powinny być wielkimi literami.
2. Zamiast klasy List(object) stwórz PersonList(list) wtedy możesz wykonywać operacje na swojej liście na nie dodatkowym atrybucie.
3. Stwórz klasę na osoby, albo użyj NamedTuple
4. W Py3 nie musisz dziedziczyć po object.
5. Tak jak wspomniał @morsik: w 36 linii może być więcej błędów m.in błędy parsowania JSON
6. Else w lini 50 jest zbędny
7. Zamiast for
11. Nie rób string1 = 'a' a później string2 = '{}b'.format(string1) tylko string2 = string1 + 'b'


@legolass: a tu to chyba akurat najlepiej zrobić:

string2 = ''.join([string1, 'b'])
Najwydajniej :>
@legolass: @morsik: no właśnie z tymi stringami łaziłem po stacku trochę. I w sumie każdy mówi co innego. join dla łączenia dwóch jest nieopłacalny (chyba), na takich mniejszych spotkałem się z poradą format. + był używany do str = str1 + str2