powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Пятничный Best practices.
25 сообщений из 76, страница 3 из 4
Пятничный Best practices.
    #38555767
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczmaytonТут цена вопроса - "сферический проект в вакууме" или уже имеющийся проект
который писали в определённом ключе.
Как можно?! Саппорт это для джуниоров. Гуру дизайна всё пишет с нуля!
Гуру дизайна и совершенство архитектурной мысли постепенно переписывает плохие участки.
А не продолжает говнокодить в том же стиле, как изначально была написана система.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38555773
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDГуру дизайна и совершенство архитектурной мысли постепенно переписывает плохие участки.
А не продолжает говнокодить в том же стиле, как изначально была написана система.
Ключевое слово "постепенно".
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38555781
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКлючевое слово "постепенно".
Конечно, параллельно с имеющимися, создаете класс матрицы,
создаете новую форму в дополнение к существующей форме списка одного из типов сущностей,
и ее уже делаете через матрицу.
Кстати, порядок колонок задается просто порядком их добавления в список колонок (List<ColumnDef> columns).
А пользователь естественно может переставлять колонки во View.

Поскольку матрица это всего лишь ViewModel, она ничего не затрагивает из бизнес-логики.
На нее легко можно перевести отдельные списки, не трогая "половину приложения".
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38555832
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDПоскольку матрица это всего лишь ViewModel, она ничего не затрагивает из бизнес-логики.
На нее легко можно перевести отдельные списки, не трогая "половину приложения".
Да, понятно, что ViewModel. Только не понятно нафига оно. ViewModel в этом случае исключительно односторонняя. Хотя ViewModel по задумке обеспечивает связь в обе стороны. Кроме этого ViewModel концепия удобна в случае внятных инструментов биндинга. Для чего она нужна, если биндинга нет - не понятно.
Ну и вы нам так и не расказали свою сокровенную тайну как именно Model мапиться на ViewModel.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38555883
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНу и вы нам так и не расказали свою сокровенную тайну как именно Model мапиться на ViewModel.
Да вы оказывается кое-что понимаете.
Это действительно тайна.
В колонке ViewModel указывается путь по свойствам до нужного реквизита, например:
Код: java
1.
2.
columnProducerName.addPropertyToPath(Good.PRODUCER_PROP);
columnProducerName.addPropertyToPath(Producer.NAME_PROP);


Затем, по пути свойств определяются имена таблиц и колонок в БД.
Строится запрос с JOIN'ами и из результата его выполнения заполняется матрица.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38555904
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTIDДа вы оказывается кое-что понимаете.

Снова нарываетесь на грубость.

HoBTIDЭто действительно тайна.
В колонке ViewModel указывается путь по свойствам до нужного реквизита, например:
Код: java
1.
2.
columnProducerName.addPropertyToPath(Good.PRODUCER_PROP);
columnProducerName.addPropertyToPath(Producer.NAME_PROP);



Чем это принципиально лучше type safe switch case? В коротм не нужны константы на каждое свойство.

HoBTIDЗатем, по пути свойств определяются имена таблиц и колонок в БД. Строится запрос с JOIN'ами и из результата его выполнения заполняется матрица.

Ну, понятно. View слой самым прямым образом влияет на доступ к данным. И теперь вы полностью подтвердили мои догадки про джуниорство. Лет 7-8 назад я дизайнил решения именно таким же образом. "Универсально", но при этом то что называется термином Over Abstracted. "Универсальность" заключается в том что, действительно один и тот же код покрывает все сущности. Это с точки зрения молодого программиста мега опупенно. Но при этом на лицо все недостатки излишней абстрагированости:
- если появляются требования не задуманые изначально абстракцией, то нужно рефакторить саму абстракцию
- ООП идет лесом, так как нет никакой возможности заточить разное поведение, под разные сущности.
У меня, например, в проекте есть у бизнес сущностей сложное вычислимое свойство. Которое не только влияет на бизнес-процесс, но и требует специального отображения на view. И как же прикажете быть в таком Anemic View, где бизнес сущности принципиально отствутствуют? Выносить вычисления в БД? И подрезать таким образом переносимость?
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38556295
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueНо как-то хотелось думать (не приведи Бог столкнуться), что в JAVA есть эквивалент - persons.OrderBy(p=>p.name)

Ещё пара месяцев и будет
personList.sort((p1, p2) -> p1.name.compareTo(p2.name));

OrderBy, тоже можно забабахать со ссылкой на getter.
http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html

Только в данном случае в этом пользы особой нет.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38556298
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С++ возвращается?

Код: plaintext
1.
ContainingClass::staticMethodName
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38556303
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonС++ возвращается?
Код: plaintext
1.
ContainingClass::staticMethodName


Угу. Java и так не дружелюбна к нубам. А теперь со стрелочками и двоеточиями будет ещё головоломнее.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Пятничный Best practices.
    #38911058
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жду сахара в "девятке". Вот такую конфету. Как в "шарпах"

Вместо:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
String location = "";
if (vendor != null)
{
    if (vendor.ContactPerson() != null)
    {
        if (vendor.ContactPerson.HomeAddress() != null)
        {
            location = vendor.ContactPerson.HomeAddress.LineOne();
        }
    }
}



вот так писать.
Код: java
1.
String location = vendor?.ContactPerson()?.HomeAddress()?.LineOne();

.

Сорц был нагло спизж взят мной из Хаба-хабра. И подпилен чтоб был похож на Java
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38911327
organism
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Берем Groovy и не ждем)
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38911334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Круть.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38911690
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЖду сахара в "девятке". Вот такую конфету. Как в "шарпах"
Ужас. От null'ов надо избавляться, а не прятать их за синтаксическим сахаром.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38911743
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvmaytonЖду сахара в "девятке". Вот такую конфету. Как в "шарпах"
Ужас. От null'ов надо избавляться, а не прятать их за синтаксическим сахаром.
+1. Мы может заменить null на NullObject в СВОЁМ коде. Но OVER9000 библиотек удалённого
вызова или persistence оставляют за собой право возвращать неинициализированные части
объекта (для SOAP) или null филды если это БД. Таковы реалии. Как с этим
бороться - неизвестно.

И вобщем-то даже не проблема с null как с "признаком" особого статуса return. А проблема
с семантикой операций которые с ним разрешены. В БД к примеру nulls можно суммировать,
ранжировать и сортировать и делать операции больше/меньше. Результат - будет детерминирован
и никакого исключения не будет. В Java подобная семантика - непозволительна.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38911749
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
String location = vendor?.ContactPerson()?.HomeAddress()?.LineOne();


Сорц был нагло спизж взят мной из Хаба-хабра. И подпилен чтоб был похож на JavaНасколько я могу судить по "Java SE 8. Вводный курс" Кея Хорстмана, есть isNull, nonNull и Optional.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38911973
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonLeonidvпропущено...

Ужас. От null'ов надо избавляться, а не прятать их за синтаксическим сахаром.
+1. Мы может заменить null на NullObject в СВОЁМ коде. Но OVER9000 библиотек удалённого
вызова или persistence оставляют за собой право возвращать неинициализированные части
объекта (для SOAP) или null филды если это БД. Таковы реалии. Как с этим
бороться - неизвестно.

Изолировать null в слое взаимодействия с этими инструментами.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38912021
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЖду сахара...Я тоже ). Но будет ли такое:
- Оператор ??
- implicit (!)
- explicit (!)
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38912267
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

Если хочется такого, то есть Scala. implicit есть, ?? - при работе с option это фактически map, flatMap и т.п.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38912587
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidvmaytonпропущено...

+1. Мы может заменить null на NullObject в СВОЁМ коде. Но OVER9000 библиотек удалённого
вызова или persistence оставляют за собой право возвращать неинициализированные части
объекта (для SOAP) или null филды если это БД. Таковы реалии. Как с этим
бороться - неизвестно.

Изолировать null в слое взаимодействия с этими инструментами.
Цена этого решения почти такая-же как "лесенка" из if.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38912604
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvЕсли хочется такого, то есть ScalaБез "подмешивания"...
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38913265
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перегрузка "+","-".... для BigDecimal всё таки нужна. Иначе финансовый софт выглядит лажово.
Здесь как-бе принципы Java-ООП звучат убедительно но рука тянется за перегрузкой.

+Джунгарики-нубасы подкидывают траблов. Только отвернёшся - они "запилят" double или
float в финансовые величины. И ведь хочется выглядеть убедительным.... но этот BigDecimal
не выглядит рефакторингом хотя-бы с эстетической точки зрения.

Ты вроде точность улучшил ... а код превратился в месиво методов.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38917067
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще сахарка подкину.

Код: java
1.
2.
3.
4.
5.
6.
List<ChessPosition> horseRoute(ChessPosition beginPos){
       // many recursive calls horseRoute(....);
       if (someCond){
           yield return chessPosition;
       }
}
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38924250
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения. Я сюда припёрся снова сонный и сердитый. Ох встречу я этого
Гослинга - дам ему подсрачника в его джинсовый зад. А потом сниму с него очки
и втопчу в асфальт.

Вот пишу

Код: java
1.
2.
3.
is (someFuckenObj.compareTo(otherFuckenObject) ... ){

}



и каждый рас зависаю на 5 - 15 секунд. Вспоминаю там знак ">" это аналог положительного целого
или наоборот в предикате compareTo.

Ну неужели не мох ты заложить в стандарте хотя-бы этот математический оператор,
чортов ты бородач?!

P.S. Всё аривуар. Расстроен. Пошёл пить лекарство.

P.S. Извините если чо. Простужен.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38925103
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
3.
if(someFuckenObj.compareTo(otherFuckenObject) > 0){

}




Я за то чтобы такой код не писать. Я за читаемость:

if(someObj.greaterThan(anotherObject)){
if(someObj.olderThan(anotherObject)){
if(greater(someObject, thenObject)){

И в том же духе. Имя метода должно следовать предметной модели.
...
Рейтинг: 0 / 0
Пятничный Best practices.
    #38980515
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczmayton
Код: java
1.
2.
3.
if(someFuckenObj.compareTo(otherFuckenObject) > 0){

}




Я за то чтобы такой код не писать. Я за читаемость:

if(someObj.greaterThan(anotherObject)){
if(someObj.olderThan(anotherObject)){
if(greater(someObject, thenObject)){

И в том же духе. Имя метода должно следовать предметной модели.


прикольно, что Java-программисты называют это "читаемость".

по мне читаемость - это

if( someobject > otherobject )
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Пятничный Best practices.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]