Насколько понимаю, нужно знать направление транслитеряции.
Комментаторы выше правы, теоретически невозможно корректно траслитерировать абстрактный набор символов на английский, так как одни и те же символы в разных языках читаются по-разному.
С другой стороны, направление транслитерации можно узнать по геотаргентингу. А если не бояться неточностей, то вообще всё просто.
Есть онлайн демка на тестирование? Есть подозрение, что там только европейские языки, их легко транслировать. А нужны в основном корейский, китайский, японский… Причём неизвестно на каком языке входящая строка.
p.s. Нет никакого способа домены третьего уровня на uft8 заводить?
Угу, согласен. Но всё же глобальные переменные плохи не только из-за своей «мутности» для нового человека, но и из-за возможности доступа к ним из любого места программы, тем самым образуя кучу нежелательных связей. Другими словами, мы не можем быть уверены, что если уберём/модифицируем глобальную переменную(разумеется с сохранение функциональности модифицируемого участка кода), то вся программа не рухнет, так как возможно что большая часть модулей на неё завязана.
Или, например, есть множество разных мелких сущностей, настройки, окружение, подключенные модули, права доступа. И эти данные часто могут понадобится в разных модулях. Корректным способом действовать было бы передавать все параметры во все модули где они могут понадобится или не понадобится(поведение модулей полиморфно). Но в таком случае нужно будет тащить в каждый класс/вызов_функции-метода гору параметров, что тоже сделает код «грязным». Чтобы побороть это, вводится глобальная переменная/синглтон, которая доступна по запросам из модулей. Так называемые «хелперы» во многих фреймворках также действуют.
Изящно, но всё же маскировка глобальной переменной под синглтон, без устранения недостатков глобальной переменной. Если синглтон будет вызываться из всех частей кода без разбора, то ничем не будет отличаться от той же глобальной переменной… (
Поддерживаю, путём долгих проб и экспериментов пришёл к такому же сочетанию цветов. Правда, использую цвет фона немножко посветлей. Выглядит чуток менее стильно, но зато контрастность получше.
Это позволит сильно сократить потребность в глобальных переменных, но глобальные переменные всё же останутся, хотя бы теже переменные экземпляров классов. Хотя мне кажется, что я нашёл ответ, сами глобальные переменные не являются злом, но доступ к ним должен осуществляться только на уровне их определения, но не из функций и методов классов.
Это получится использование Singleton не по назначению, и всё равно это будет той же глобальной переменной. Неважно с глобальной переменной связаны многие куски системы, или с синглтонами, путаные связи тянущиеся через всю систему останутся…
Согласен, но экземпляр этого супер-класса будет глобальной переменной. К тому же это порочная практика, по сути это передислокация поля глобальных переменных в корень этого дерева.
В чём смысл правила — не создавать глобальные переменные? Чтобы минимизировать количество связей между частями кода. Есть нераспутываемый комок связей, мы оборачиваем его в один класс, и наружу торчит одна переменная, но проблему это не решает. Сложность системы не снизилась, хотя формально правило соблюдено. В этом и сложность. Можно поэкспериментировать, но реально почувствовать верность или неверность выбранного подхода можно будет только хорошо поработав над проектом.
Задавая себе этот вопрос, считаю что без глобальных переменных обойтись нельзя. Их можно спрятать, но де факто они останутся. Но другие программисты нередко меня удивляли своей изобретательностью и находчивостью, так что не исключаю, что существует вариант без использования глобальных переменных, до которого я пока не додумался.
Экземпляры классов тоже переменные. Если они не вложены в другие экземпляры классов, то они находятся в глобальном пространстве имён. Можно конечно эти объекты искусственно спрятать в статик-классы/функции, но это будет лишь дым и зеркала не меняющие положения вещей.
Получается, какие-то экземпляры классов высшей абстракции всё равно будут в глобальном пространстве имён (
Думаю тут проблема в том, что одни и те же символы используются в разных языках, из-за этого, не зная языка исходного текста, невозможно определить в автоматическом режиме какую букву кодирует символ.
А особая точность мне не нужна, мне бы хватило приблизительного варианта.
Комментаторы выше правы, теоретически невозможно корректно траслитерировать абстрактный набор символов на английский, так как одни и те же символы в разных языках читаются по-разному.
С другой стороны, направление транслитерации можно узнать по геотаргентингу. А если не бояться неточностей, то вообще всё просто.