Классика баз данных - статьи

       

Сложность данных в именах.


Для того чтобы понять, о чем идет речь, вновь обратимся к арифметике. Рассмотрим операцию сложения, которая в арифметике записывается как "x+y". Здесь, поскольку речь идет о формальном построении, "х" и "у" являются обозначениями абстрактных числовых значений. В информационной системе, реализующей арифметические вычисления, запись "x+y" означает сложение двух значений (естественно, числовых), хранимых в переменных с именами "х" и "у". Судя по всему, эти переменные были явно созданы и поименованы в том же контексте, в котором выполняется операция сложения их значений. Не вызывает сомнения, что такую систему можно считать хорошей и правильной реализацией арифметики (конечно, если она не допускает банальных арифметических ошибок).

Однако современные языки программирования позволяют использовать гораздо более интересные выражения. Рассмотрим, например, выражение "CurrentOrder.items.Count() + History.OrdersDetails.TotalOfCounts". Здесь мы также складываем два числа, однако имена или комбинации имен, используемых для обозначения этих чисел не в пример сложнее. Переменные, содержащие эти значения, являются частью гораздо более сложных структур, они не существуют вне этих структур (т.е. в отличие от переменной "х" не были созданы явно и отдельно от других). Более того, эти целочисленные переменные, возможно, вообще не существуют, а складываемые значение вычисляется.

Но рискнет ли кто-нибудь утверждать, что эта система реализует арифметику хуже или не так правильно, чем система, позволяющая выполнять только "x+y", т.е. манипулировать значениями явно созданных числовых переменных? Конечно, нет! Самое главное, чтобы, говоря образно, 2+2 давало 4, а откуда система берет эти значения, какие структуры их скрывают, как эти структуры определены, как система именует переменные, содержащие эти значения, какие имена и комбинации имен при этом используются – это внутреннее дело системы. С точки зрения арифметики, являющейся формальным (можно сказать бессмысленным – в смысле "не имеющим никакого отношения к предметной области") построением, выражение "CurrentOrder.items.Count()", которое отражает факт наличия в системе некой сложной структуры и, без сомнения, представляется осмысленным для пользователей, ничем не отличается от простого, бессмысленного имени "x".



Содержание  Назад  Вперед