НеНужноНедооцениватьЦенностьЧитабельностиКода
ПрограммистыНеДолжныНедооцениватьЦенностьЧитабельностиКода.СегодняМыПоговоримЕщеРазПроОбщиеПрактики,КоторыеВсеМы,Кажется, ПринимаемЗаДолжное: НаименованиеПеременныхИМетодов.
ВродеТакаяНезначительнаяНаПервыйВзглядВещь,Верно?КакойКейсОбычноИспользуютПрограммистыЧтобыСвязатьСлова:Верблюжий,ЗмеиныйИлиШашлычный(Кебаб), ИВообще, ТакЛиЭтоВажно?
ЧитаемостьюКодаНеСледуетПренебрегать.ЭтоВлияет,КакЛегкоВыМожетеПеремещатьсяИПониматьСвойИлиЧужойКод.
ИтакЯзыкиРаннегоПрограммированияНеИмелиТехЖеСоглашений,КоторыеМыИмеемСегодня.ТакиеЯзыки,КакLispИCOBOL,ПоявилисьДоШирокойПоддержкиASCII. ПрописныеИСтрочныеБуквы,АТакжеСпециальныеСимволы,ТакиеКакПодчеркивание,ПростоНеПподдерживалисьКомпиляторамиЕщеВНачале50-хИ60-хГодов.
ИЛиспИКоболПозволяютДефисамРазделятьСлова.АнализаторLispБылДостаточноУмен,ЧтобыОпределить,БылЛиДефисМеждуДвумяСловами, ИлиЕгоСледуетИспользоватьВКачествеОператораВычитания.ВCOBOLВКачествеОператоровИспользуютсяТолькоПолныеСлова,ИНеИмеетЭтуПроблему. ВотПримерВычитанияВКоболе:
SUBTRACT data-item-1 FROM data-item-2
ПосколькуДефисНеЯвляетсяЗарезервированнымКлючевымСловом,ЕгоМожноИспользоватьДляРазделенияСлов.
КогдаЯзыкиПрограммированияСозрелиВ80-хИ90-хГгодах,СталоЯсно,ЧтоДефисДолженБытьЗарезервированДляМатематическихОпераций.ЕщеОднаПроблемаСУмнымодходомLispЗаключаласьВТом,ЧтоОнНеМасштабировалсяВСовременныхЯзыкахИЗначительноЗамедлялТокенизацию.
Пробелы,Очевидно,НикогдаНеМогутБытьИспользованы,ТакКакПочтиКаждыйЯзыкПрограммированияИспользуетИхВКачествеГраницМеждуТокенами.ТакЧтоЖеОстается?КакМыМожемНаписатьНесколькоСловКакОдно,СохраняяЧитаемостьЭтихСлов?
ИМыПодошлиКТомуПочемуСегодняМыОсталисьСДвумяОсновнымиСсоглашениями:CamelCase,ЛибоСоСтрочнойБуквыЛибоСЗаглавнойИSnakeCase.КстатиЗаглавныйРегистрCamelCaseТакжеНазываетсяPascalCase.
ПоБольшейЧастиВКаждомЯзыкеИмеетМестоБытьОдинИзЭтихВариантов.МожноСказатьЧтоЭтоПростоВопросПринциповСообществ(ПриветПайтонистам),ИПокончитьСЭтим.
НоПоднимаяТемуЧитабельностиКодаНеСложноЗаметитьЧтоCamelCaseДелаетТекстБолееТруднымДляЧтенияПоСравнениюСSnakeCase.
ЕслиСравнитьДваНижеСледующихВариантаНаписанияПеременной:
userId
user_id
ВашМозгУжеПодсказываетВамЧтоЕмуЛегчеПрочесть,Верно? :)
ИЭтоДействительноТак:CamelCaseБолееКомпактен:ВамНеНужноПисатьБольше.НоЭтоНеТотСтильКоторыйБлижеВсегоКТому,КакЧеловеческийМозгНаСамомДелеЧитаетТекст.
ЭтоСущественныйАргумент,КоторыйИмеетЗначениеВДискуссии:КакСделатьТакЧтобыНашемуМозгуБылоКакМожноПрощеЧитатьИПониматьКод.
ЧитаемыйКодСнижаетКогнитивнуюНагрузку.МеньшаяКогнитивнаяНагрузкаОзначаетБольшеПамятиДляЛюдейЧтобыДуматьОДругихВещах,ТакихКакНаписаниеБизнесЛогики.
"ИВесьПостТолькоОПользеПодчеркивания?" КонечноНет,НеТолькоИз-заЭтого. НаписаниеЧитаемогоКодаНамногоБольше, ЧемСоглашенияОбИименовании. НоТакиеМелочиПомогаютПолучитьБолееЛучшееРешение.
Что думаешь?