Na navigaci | Klávesové zkratky

Translate to English… Ins Deutsche übersetzen…

Nette 2.3 bude trošku citlivka

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

  1. Luki #1

    avatar

    Rozhodně krok správným směrem.

    před rokem | odpovědět
  2. pkristian http://pkristian.cz #2

    avatar

    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 :)

    před rokem | odpovědět
  3. M.K. http://www.mirin.cz #3

    avatar

    Tohle je tam nejmenší věc, které se v nové verzi nette obávám, také to v neposlední řadě lehce zvedne výkon.

    před rokem | odpovědět | reagoval [4] Martin
  4. 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.

    před rokem | odpovědět
  5. Tomáš Jacík #5

    avatar

    Já ani nevěděl, že se to v Nette neřeší, asi to píšu celou dobu správně :-)

    před rokem | odpovědět
  6. Jakub Vrána http://php.vrana.cz/ #6

    avatar

    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.

    před rokem | odpovědět
  7. RD http://rodi.sk #7

    avatar

    určite zmena k lepšiemu…

    před rokem | odpovědět
  8. Martin https://martinbarta.eu #8

    avatar

    Paráda. Z Linuxu jsem zvyklý a tak je dobře že to bude stejně i v Nette.

    před rokem | odpovědět

Zanechat komentář

Text komentáře
Kontakt

(kvůli gravataru)



*kurzíva* **tučné** "odkaz":http://example.com /--php phpkod(); \--