вторник, 14 декабря 2010 г.

Sharepoint: именование полей и списков

Не знаю является ли это ошибкой или это просто удобство, но скажу своё слово. :-)
Очень часто наблюдаю, что начинающие разработчики при создании новых списков и при наделении их полями при именовании сначала сразу же используют русскоязычные названия.
Чтобы была понятна проблема, объясню. Любое поле и список имеет 2 название: внутренние (InternalName) и отображаемое (DisplayName). Когда мы создаем поле или список с русскоязычным названием, то происходит следующее:
  • Список
    • InternalName - присваивается: для обычных списков ListN или для библиотек DocLibN - где N - нумератор списка. Узнается при анализе адресной строки адреса списка.
    • DisplayName - то что ввели
  • Поле
    • InternalName - перекодированное название, что-то наподобие _x041f__x0440__x0438__x0432__x04. Это название можно узнать при анализе адреса, который высвечивается в момент редактирования свойства поля. Там должен быть параметр Field=%5Fx041f%5F%5Fx0440%5F%5Fx0438%5F%5Fx0432%5F%5Fx04. Есть небольшая разница: %5F надо заменить на _ (подчеркивание).
    •  DisplayName - то что ввели
В принципе ничего страшного нет. Но теперь представим "удобство" разработчика, который будет работать с этими объектами. Ужас! Можно конечно статический класс определить с такими полями, но не стоит.
Я придерживаюсь следующего правила:
  • При создании списка/поля вначале называю его по-английски и желательно без пробела (пробел превращается в %20, что тоже на мой взгляд некрасиво). Создается объект с InternalName и DisplayName какой мы задали.
  • Переименовываю объект. InternalName остается какой был. А DisplayName стал более дружественным.
Еще есть одна ошибка, тоже достаточно часто встречающаяся у начинающих разработчиков: при доступе к значениям полей используют DisplayName, например item["Количество"]. Надеюсь понятно почему так делать не стоит? Правильно, DisplayName можно изменить, и тогда наш код перестанет быть рабочим. Правило: всегда стараться использовать в коде InternalName.

Комментариев нет:

Отправить комментарий

Еще статьи

2leep.com