Nette ve verzi 2.3 bude case sensitive. Proč a co to konkrétně znamená?
Case sensitivity, anglicky „citlivost na velikost písmen“, znamená, že
například Homepage
a homepage
jsou dva naprosto
rozdílné řetězce. PHP je citlivé na velikost písmen u proměnných,
ignoruje ji u tříd a metod. JavaScript, C#, Ruby nebo XML jsou citlivé
u všech identifikátorů, naopak HTML je case insensitive. Souborový systém
na Linuxu je case sensitive, zatímco na Windows a Macu nikoliv. Atd.
Začínal jsem na jazycích, které nebyly na velikost písmen citlivé, a
připadalo mi šílené, že některé jiné jsou. „To si jako u každého
identifikátoru musím pamatovat, které písmenko je malé a které velké?“.
Tohle byla lichá obava, funguje to stejně jako v přirozeném jazyce, prostě
stačí znát, že vlastní jména se píší s velkým počátečním
písmenem, nikoliv to, že jeden konkrétní člověk se jmenuje
Franta
a ne franta
.
Nicméně mám rád pravidlo „buď velkorysý v tom, co přijímáš, a striktní v tom, co odesíláš“ a protože striktní lpění na citlivosti může být až komické (Nabla je automat), Nette bylo vůči velikosti písmen tolerantní.
Konkrétně šlo o
- jména presenterů
- některé parametry v cestě URL
- názvy tříd u autoloadingu a DI kontejneru
Být tolerantní v prostředí, které je na velikost písmen citlivé, ba co hůř, které je citlivé v závislosti na operačním systému apod, přináší řadu úskalí. Například URL lišící se jen velikostí písmen mohou mít zcela odlišný obsah, atd. A přitom vlastně jen tolerujete, že někdo píše jak motejlek.
Proto od verze 2.3 bude Nette na velikost písmen citlivé.
A protože se Nette vždy snaží o co nejbezproblémovější přechod, bude chyby ve velikosti písmen detekovat a upozorní na ně.
Komentáře
Luki #1
Rozhodně krok správným směrem.
pkristian #2
Já s tím souhlasím, vnese to více řádu do kódu, setřou se rozdíly a nepořádné pisatele to seřve :)
M.K. #3
Tohle je tam nejmenší věc, které se v nové verzi nette obávám, také to v neposlední řadě lehce zvedne výkon.
Martin #4
#3 M.K., lepší slovo bude spíš „neměřitelně“
Router v Nette používám vlastní a všechny adresy převádím na malé písmena. Je to IMO běžnější a spousta lidí koneckonců ani nemá ponětí, že URL je case–sensitive.
Tomáš Jacík #5
Já ani nevěděl, že se to v Nette neřeší, asi to píšu celou dobu správně 🙂
Jakub Vrána #6
Změna je to dobrá. Problém s velikostí písmen nastává jen tehdy, když někdo něco považuje za jedno slovo a někdo za dvě, např. fileName nebo passPhrase. Ale podřizovat těmto okrajovým případům všechno ostatní samozřejmě není třeba.
RD #7
určite zmena k lepšiemu…
Martin #8
Paráda. Z Linuxu jsem zvyklý a tak je dobře že to bude stejně i v Nette.
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.