Так делают, потому что просто деваться некуда, не от хорошей жизни народ так извращаетсяАвтор оригинала: Screjet
pachanga
Почему же бред?
По моемому, все так делают. Любой разумный префикс к названию класса = единственный вариант.
PHPUnit2_Tests_Framework_AssertTest - реальное название тестового класса из библиотеки PEAR:HPUnit2, это не нормально!зы. Не думал, что тройного уровня вложенности так же может быть недостаточно?
Есть решения лучше? Неймспейсы не решили бы проблему. Это был бы всего лишь "костыль".это не нормально!
Не только классов. И переменных и ф-ций(методов).очень не рекомендуют использовать длинные имена для названия классов
А вот тут можно поподробнее? Не улавливаю связи между reflection и namespace.другое дело, что язык, где есть какие-то зачатки reflection может дать namespace'ам больше, чем c++ который тут приводят в пример уже 10тый раз.
Почему же, за примером далеко ходить не надо, вот небольшой Java код:Автор оригинала: Screjet
Есть решения лучше? Неймспейсы не решили бы проблему. Это был бы всего лишь "костыль".
import java.util.regex.*;
Pattern p = Pattern.compile("([a-zA-Z])?_([a-zA-Z])");
java.util.regex.Pattern p = java.util.regex.Pattern.compile("([a-zA-Z])?_([a-zA-Z])");
Подожди, написано же черным-по-беломуАвтор оригинала: neko
это не название класса, а pear, вот что и в правду ненормально
class PHPUnit2_Tests_Framework_AssertTest extends ...
Не согласен. Допустим, я использую библиотеку A и B, в каждой из них есть свой класс User. Допустим, исправить я не могу код, по разного рода причинам. При совместном использовании возникает fatal error.если ты именно в такой трактовке их хочешь, то разницы вообще никакой. syntactic sugar.
namespace, как я уже говорил. можно реализовывать по разному.namespace - не syntactic sugar, а отличное средство изолировать массу кода, обозначив четкие границы.
Глупости, поддержка namespace должна быть встроена в язык, все остальное - dirty hack. Таким макаром можно и exceptions реализовывать.Автор оригинала: neko
namespace, как я уже говорил. можно реализовывать по разному.
то что ты хочешь, можно обозначить путем добавления MyNamespace к названиям.
Допустим, я использую библиотеку A и B, в каждой из них есть свой класс User. Допустим, исправить я не могу код библиотеки A или B, по разного рода причинам. При совместном использовании возникает fatal error.
У-у-у, как все тут запущено Мы с тобой битый день воду в ступе мололи. Если приведенный мною выше довод не является по-твоему аргументом, то я отступаю от дальнейшего спора.Автор оригинала: neko
это не аргумент вообще.
плохому разрабочику ничего не мешает игнорировать поддержку namespace, создавать массу глобальных переменных итд.
-~{}~ 02.06.05 01:04:One of the important functions of packages is to partition the Java namespace and prevent name collisions between classes. It is only their package names that keep the java.util.List and java.awt.List classes distinct, for example.
Естественно, добавлять огромный префикс к нескольким десяткам классов при их написании и использовании - крайне утомительное занятие.Автор оригинала: neko
если кто-то не заморачивается добавить к своим классам разумный префикс, он также не будет возится с неймспейсом.
class Foo
{
var $foo_a;
}
class Bar
{
var $bar_a;
}