Pull to refresh

Comments 26

А ведь вы правы. Искать действительно удобно. Но почему так мало библиотек, которые используют префиксы?
Не знаю. Я осознал это буквально месяц назад, и вот теперь рекомендую всем, кто будет разрабатывать любые библиотеки.
Как вариант — можно использовать «ключевые слова» в поиске, довольно сильно сокращает количество левых выдач. Это кэп конечно, но всё же. А так да, Вы правы
>>Чтобы найти документацию или сторонние обсуждения к Array от Adobe надо приписывать всякие штуки, типа as3 или Adobe, некоторые статьи теряются и не находятся таким образом.
Меня лично немного напрягает ко всему подряд дописывать префиксы. Гуглить легче, это да, но код для меня получается менее красивым. Неймспэйсы приятнее в этом плане.
Если смотреть на это со стороны «тайм менеджмента», то гуглишь ты 1-2 раза, и пишешь это имя 100 раз (утрирую конечно), но смысл понятен, проще 1 раз загуглить с названием языка, чем по 100 раз дописывать этот индекс… (как пример, тот же автоподстоновщик, чтобы выбрать нужно имя из списка придется набирать прификс). Вот суфиксы в таких библиотеках, как d3d вполне себя оправдывают…
думал о постфиксном варинте, и даже проверял, но понял что мой глаз цепляется за концы идентификаторов и если поставить суффиксы то мне такой код становится пря жутко нечитаемым. Соглашусь про то что набо отнимает некоторое количество времени, но думаю это разумный компромисс.
да и кстати, в flashdevelop подстановщик ищет не с начала фразы, и набор без префикса подсказывает идентификатор с префиксом. Я думаю что и другие ide скоро научаться или уже умеют.
В префиксах есть смысл, хоть и не везде. Например, если есть возможность использовать пространства имен — то префиксы там не нужны, они там будут попросту зря. Для API, не имеющего такие пространства имен, согласен, крайне удобны эти префиксы, например API_Client_BlaBlaBla, которые позволяют сразу определить что это внешнее API и относится оно к модулу работы с клиентами.
Я и не призываю делать их везде. Хотя сам делаю везде.
Мне кажется, подобные штуки лучше оборачивать в собственные интерфейсы, иначе в конце концов прямое использование таких API может окончиться плачевно…
Мы и так оборачиваем их. У нас получаются фасады — FCD_Client_BlaBlaBla, или еще обертка над фасадом для отчетности — RPT_Client_BlaBlaBla, которые мы потом используем в своих отчетах. Оставил API, чтобы было более нагляднее
Даже без уникальных имен достаточно дописать название языка/библиотеки.
Например: www.google.ru/m/search?q=Python+date выдает ссылку сразу на описание класса date, хотя имя ни разу не уникально.
Не надо забывать и то, зачем префиксы придуманы: пересечение имён. Я встречал ситуацию, когда библиотека для моделирования физики реализует класс Point, и библиотека для отрисовки реализует свой класс Point. Без префиксов попытка использовать их вместе стала бы некоторой проблемой (пространства имён существенно загромождают код). В общем пару букв всегда писать проще по-моему.
Как раз пространства имён отлично это дело разруливают, но вот поиску они, к сожалению, способствуют гораздо хуже.
Да разруливают примерно так: MyGraphics::Point.x = MyPhysics::Point.x. По-моему удобнее так: mgPoint.x = mpPoint.x.
Конкретно тут чисто дело вкуса, привычки и инструмента/языка.
В C# для такого есть алиасы(псевдонимы) типов:

  1. using MyPoint = GlobalNamespace.Dr.Point; // Here is an alias declaration
  2. using System.Drawing;
  3.  
  4. namespace GlobalNamespace
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             MyPoint my = new MyPoint();
  11.             my.X = 10;
  12.             Point p = new Point();
  13.             p.X = my.X;
  14.         }
  15.     }
  16. }
* This source code was highlighted with Source Code Highlighter.
Надо сказать, что и в C++ тоже есть нечто подобное — typedef. А в коде выше я на самом деле вообще бред написал, обращаясь к не статическому полю как к статическому через имя класса.
Про С++ я тоже про typedef подумал, но я не шарю в «плюсах». Мелькнула мысль, что там могут быть какие-то подводные камни, поэтому утверждать ничего не стал.

А про обращение к статическим полям… Ну, это не так важно для рассматриваемого вопроса, имхо. Тут же важен процесс type resolve и имеющийся конфликт имён.
Все равно довольно спорно. Если есть хорошая документация и активный форум, то вроде как и не нужны префиксы.
UFO just landed and posted this here
Гуглить несомненно удобнее, но вот использовать… Как-то смущает список глобальных имён в IDE на десяток экранов и неудобно использовать автодополнение. Нэймспейсы это не просто другая запись длинных имён с использованием другого разделителя и «лишними» инструкциями, это прежде всего средство иерархической организации кода и инкапсуляции деталей реализации.
Я не говорю о отказе от неймспейсов. Я говорю об использовании их вместе. Нет никакого заваливания scope глобальными идентификаторами. Какие пакеты подключил то и подсказывается.
Sign up to leave a comment.

Articles