Konwencja nazewnictwa dla projektów open source na iOS / OSX

12

Nie zawsze, ale przez większość czasu, znajdziesz projekty open source dla iOS lub Mac OS X o nazwach rozpoczynających się od pierwszych liter imienia i nazwiska autora. Jeśli autorem projektu byłby Nick Leblanc, projekt zostałby odczytany jako NLMyProject.

Przykłady:

Skąd to pochodzi? Czy jedna osoba napisała to w ten sposób, a potem wszyscy poszli za nią?

Nie znalazłem nic na ten temat, nawet w Wytycznych Apple . Czy ten idiom jest napisany gdziekolwiek?

Stéphane Bruckert
źródło
1
Ładne pytanie i fajne przykłady open source! ;-)
Leo Natan

Odpowiedzi:

16

Cel C, podobnie jak C, nie ma przestrzeni nazw. Oznacza to, że jeśli ktoś już zdefiniował funkcję foolub klasę Bar, musi ona być globalnie unikalna i nie można jej zdefiniować. Może to powodować wiele problemów, gdy masz kod, a następnie dodajesz kolejną bibliotekę i nagle rzeczy psują się w dziwnych miejscach.

Jest to wytyczne przedstawione przez firmę Apple za to w Programowanie w Objective C: Konwencje dział programistów iOS:

Niektóre nazwy muszą być unikalne w całej aplikacji

Za każdym razem, gdy tworzysz nowy typ, symbol lub identyfikator, najpierw powinieneś rozważyć zakres, w którym nazwa musi być unikalna. Czasami tym zakresem może być cała aplikacja, w tym powiązane ramy; czasami zakres jest ograniczony tylko do otaczającej klasy lub nawet tylko bloku kodu.

Nazwy klas muszą być unikalne w całej aplikacji

Klasy Objective-C muszą mieć unikalne nazwy nie tylko w kodzie, który piszesz w projekcie, ale także we wszystkich ramach lub pakietach, które możesz zawierać. Na przykład należy unikać używania ogólnych nazw klas, takich jak ViewController lub TextParser, ponieważ możliwe jest, że środowisko zawarte w aplikacji może nie spełniać konwencji i tworzyć klasy o tych samych nazwach.

Aby nazwy klas były unikalne, konwencja polega na stosowaniu prefiksów we wszystkich klasach. Zauważysz, że nazwy klas Cocoa i Cocoa Touch zwykle zaczynają się od NS lub interfejsu użytkownika. Dwuliterowe przedrostki są zastrzeżone przez Apple do użytku w klasach frameworka. Gdy dowiesz się więcej o Cocoa i Cocoa Touch, napotkasz wiele innych prefiksów, które odnoszą się do konkretnych ram:

...

Twoje własne klasy powinny używać trzyliterowych prefiksów. Mogą one odnosić się do kombinacji nazwy firmy i nazwy aplikacji, a nawet określonego komponentu w aplikacji. Na przykład, jeśli twoja firma nosiła nazwę Whispering Oak, a ty opracowywałeś grę o nazwie Zebra Surprise, możesz wybrać WZS lub WOZ jako prefiks klasy.

Biblioteki, o których wspominasz, w pewnym sensie łamią tę konwencję, ale zajmują się problemem braku przestrzeni nazw w Celu C.

Dalsza lektura
Przestrzeń nazw NSHipster
Jaki jest najlepszy sposób rozwiązania kolizji przestrzeni nazw Objective-C?
Jak korzystać z przestrzeni nazw w kodzie C celu iOS?

Społeczność
źródło
Wygląda na to, że Objective-C naprawdę potrzebuje przestrzeni nazw ...
Chris Cirefice
1
@ChrisCirefice byłoby naprawdę miło, ale należy sobie uświadomić, że Cel C jest cienką warstwą na szczycie C. Próbowanie wprowadzenia przestrzeni nazw jest prawdopodobnie trudniejsze niż się wydaje, bez zepsucia. Wnikając Dlaczego Objective-C nie ma przestrzeni nazw? Znalazłem programistów Clanga - dodawanie przestrzeni nazw do Objective-C . Pamiętaj, @jest używany, ponieważ nie jest używany w C ... próba dodania innego operatora, który nie psuje innych rzeczy, jest trudna.
1
@ChrisCirefice Przestrzenie nazw niczego nie rozwiązują. Starcia prefiksów stają się starciami przestrzeni nazw.
Miles Rout
@MichaelT Cel C nie był przez jakiś czas cienką warstwą na C (Cel C 2.0). Teraz Apple przeniósł się na Swift, który obejmuje bardziej nowoczesne funkcje, takie jak przestrzenie nazw, ale obecnie brakuje innych funkcji Celu C.
Leo Natan