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

Czy ktoś orientuje się jakie są zasady nazywania funkcji i metod w języku Swift?

Object Storage Arubacloud
+1 głos
154 wizyt
pytanie zadane 21 grudnia 2016 w Android, Swift, Symbian przez Hvosz Początkujący (410 p.)
Jak w temacie, uczę się z poradników na Treehouse, ale nie do końca to zrozumiałem. Będę wdzięczny  za odpowiedź.

1 odpowiedź

+1 głos
odpowiedź 8 marca 2017 przez Raymond.Z Obywatel (1,800 p.)
wybrane 9 marca 2017 przez Hvosz
 
Najlepsza

Cześć.

Zacznijmy od podstaw. Budowa funkcji w Swift wygląda następująco.

func nazwa(etykieta_zewnetrzna etykieta_wewnetrzna: typ)

Etykieta zewnętrzna jest pokazywana przy wywoływaniu funkcji. Jest opcjonalna to znaczy, że możesz ją zamienić na znak podkreślenia `_`, który oznacza tyle, że coś jest bez nazwy. Aczkolwiek dobrym nawykiem będzie używanie etykiet zewnętrznych ze względu na poprawę czytelności kodu.

Etykieta wewnetrzna jest używana jako odwołanie do zmiennej w funkcji.

Oczywiście nawiasy klamrowe otwieramy zawsze po instrukcji w tej samej linii.

Powiedzmy, że masz napisać prostą funkcję tworzącej typ URL na podstawie jakiegoś stringa. Mógłbyś ją napisać tak.

func urlForString(_ string: String) -> URL {
    ...
}

wywołanie takiej funkcji i przypisanie do stałej będzie wyglądać następująco.

let url = urlForString(string)

Co nie jest jednak zbyt ładne, zwłaszcza, że jest to naprawdę prosta funkcja i ma jeden parametr, a może mieć ich więcej, a kod jednak powinien być maksymalnie czysty, zwłaszcza, że w programowaniu większość czasu się spędza na czytaniu kodu, więc tworząc kod, który jest przejrzysty i łatwy wczytaniu zaoszczędzamy sobie jak i innym(!) masę czasu.

Zamiana takiej funkcji na taką z etykietami zewnętrznymi będzie wyglądać, więc tak

func url(forString string: String) -> URL {
    ...
}

a wywołanie

let url = url(forString: string) 

niektórzy by się jeszcze pokusili o taki zapis

func url(for string: String) -> URL {
    ...
}

wywołując tylko

let url = url(for: string) 

Nie ma nic w tym złego, aczkolwiek zalecam używać już takiego zapisu, gdy mamy wiele takich funkcji co zwraca w tym wypadku URL, a przyjmować może wiele parametrów.

Nazwy funkcji oczywiście zapisujemy camel case'm.

 

 

Jedyna różnica w pisaniu funkcji jest przy delegete'ach.

Tam nazewnictwo funkcji trochę się różni.

Nazwa funkcji zawsze zaczyna nazwą klasy do której jest delegate, pierwszy parametr musi być zawsze typu tej klasy i zawsze dajemy go bez etykiety zewnętrznej.

Kolejne parametry już piszemy normalnie, ale tak żeby było wiadomo co ta funkcja robi.

np mamy klasę Action...

class Action {
    weak var delegate: ActionDelegate?
    var name: String

    init(name: String) {
        self.name = name
    }

    ...
}

Tworzymy dla niej delegate'a, który informuje o zmianie nazwy, będzie to wyglądać tak.

protocol ActionDelegate {
    func action(_ action: Action, didUpdateName name: String);
}

Oczywiście, będą też przypadki, że nie chcemy mówić, że jakaś zmienna się zmieniła, przekazywać ją tylko poinformować inny obiekt po prostu o tym, że coś się zmieniło, wtedy taki delegate tworzymy trochę inaczej dodając w nazwie funkcji co się stało czy obiekt został zaktualizowany czy coś dodał do jakieś tablicy itd.

np:

protocol ActionDelegate {
    func actionDidChange(_ action: Action)
}

 

Jedna z ważniejszych rzeczy, którą powinienem na początku napisać to, że w nazwach funkcji używamy prostych czasów, nie używamy jakichś hasBeen czy innych tylko jakieś did, has, is itd

 

Tak po krótce to tyle jakby trzeba było to rozwinąć albo miałbyś pytania to śmiało pisz komentarz :-)

komentarz 9 marca 2017 przez Hvosz Początkujący (410 p.)
Wow! Wielkie dzięki, dużo informacji , ale staram się wszystko pomału ogarniać :)

Podobne pytania

0 głosów
1 odpowiedź 297 wizyt
pytanie zadane 20 czerwca 2015 w Inne języki przez mach Użytkownik (700 p.)
0 głosów
0 odpowiedzi 365 wizyt
pytanie zadane 3 grudnia 2017 w Android, Swift, Symbian przez Szaradek Obywatel (1,340 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 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!

...