Обновить
68
2.8
nagg@Nagg

Разработчик

Отправить сообщение
В теории вам не нужны дополнительные сущности для хранение — вы можете использовать доменные + EF mapping (ведь EF'у не обязательно нужны всякие атрибуты и т.п., но есть небольшие ограничения над сущностями (типа обязательного paramterless конструктора) что опять же чуть-чуть подтекающая абстракция ;-)
Каждый для себя сам решает — нужна ли ему абстракция повверх технологии хранения данных или нет.
Писал когда-то статью по спецификациям тут на хабре. У меня там IsSatisfiedBy имел возращающее значение
Expression<Func<T, bool>>
а не
Predicate<T>
или
Func<T, bool>
что давало возможность репозиторию использовать его в фильтрах без маппингов и загрузки всей таблицы в память.
PS: не течёт. немножко подтекает ;-)
WinForms намного менее требователен к железу, а скорость разработки не сильно ниже (да, там нет MVVM, но и MVP не плох). Ну и Qt+qml как вариант (красиво и без тормозов)
несколько странно видеть требование «запуск даже на калькуляторе» и тормозной WPF (3 draw calls чтобы отрисовать эллипс) с монструозной Prism'ой в одном предложении.
Да, то что нужно. Странно что не из коробки. Ещё бы two-way binding и было бы прекрасно. Сейчас нафигачил сложную форму и смотрю профайлером насколько это тормознуто всё.
не очень понял как прибайндить коллекцию из вьюмодели к ListView/RecyclerView :(
Это немного другая вьюха, не от MVP/C, а от MVVM, ей можно. в MVVM ViewModel не сильно волнуется о том, в каком именно виде вьюха отразит день рождения. Вообще очень клево, давно это ждал. После опыта с Windows и MVVM разработка под Android приносила некоторый зуд и неудобство, спасибо Butterknife хоть как-то уменьшал этот зуд. Теперь заживём :-).
Ну тут надо надеятся, что либо котлин, либо свифт покроют вторую платформу — вроде вполне современные языки. Так что вся надежда на Jetbrains (kotlin/appcode). или Xamarin.
Понакупят все, и потом пробки в воздухе будут: (
Ай ну это скучно же. Где холивар, переход на личности и рукоприкладство?
Да, протекает. Но не так уж и легко — в EF (и даже в дотнетовской реализации Hibernate) всё нужное интерпретируемо в SQL даже если вы в фильтре вызовете contains на какой-нибудь локальный лист. Давно не сталкивался с ошибками того, что я что-то не то сделал в лямбдах в linq. Раньше в спорах java vs C# в ход шел козырь кроссплатформенность. Сейчас он как-то стал неактуален с xamarin. И пошёл новый козырь: у нас фичи продумываются столетиями и всё идеально, а у вас бардак :-).
я про читабельность — лишняя информация для глаз. и так понятно какого типа переменная.
Если вы понимаете что это такое, то наверняка знаете какой профит это дает. Была бы такая фича — была бы возможность в java написать такой код
persons.stream().filter(p -> p.getAge() > 18).limit(100).collect(Collectors.toList());

который бы при выполнении сконвертился бы в SQL
"select top(100) * from persons where age > 18"

и вернул объекты из бд. Но в целом согласен — фичи надо вводить с умом
Для этого кейса да. но в большинстве других где тип слева такой же как справа var необходим. особенно если название типа очень большое, к примеру:
GroupConversation.GroupConversationParticipant participant = new GroupConversation.GroupConversationParticipant();

если мы не приводим к базовому/интерфейсу — эта копипаста не нужна и должна быть заменена на
var participant = new GroupConversation.GroupConversationParticipant();
2) — var в C# не ослабляет типизацию. это автовычисление типа по выражению справа.
4) да, сам подумал так, но тогда могу усложнить пример — надо выполнить 3 разных запроса один за одним обновляя текст на UI:
await client.SendRequest1(request1);
currentActivity.title.Text = "1/3";
await client.SendRequest2(request2);
currentActivity.title.Text = "2/3";
await client.SendRequest1(request3);
currentActivity.title.Text = "3/3";

vs:
client.sendRequest1(request1, o -> currentActivity.runOnUiThread(() -> {
	currentActivity.title.setText("1/3");
	client.sendRequest2(request2, o -> currentActivity.runOnUiThread(() -> {
		currentActivity.title.setText("2/3");
		client.sendRequest3(request3, o -> currentActivity.runOnUiThread(() -> {
			currentActivity.title.setText("3/3");
			}));
		}))
	}));

писал в блокноте поэтому уверен что в java напутал в конце со скобками ибо нечитаемо.

зы: пробовал. на котлин вся надежда.
немножко добавлю холивара про фичи языка — полгода назад стал активно писать проекты под Android на java (фактически перешел на нее с C#) и есть пару веще с которыми мне сейчас тяжело мириться:
1) цирк с примитивными типами long--Long с невозможностью юзать первые в генериках (уж молчу о том, что нельзя писать свои кастомные Value Types)
2) отсутсвие var (или как в плюсах — auto). хоть за сниппет .var спасибо IDE. но все равно не то. сравните:
FooFactoryFactory foo = new FooFactoryFactory();
vs:
var foo = new FooFactoryFactory();

3) лямбды и Stream — очень рад что это появилось в яве, хоть до C# LINQ не дотягивает отсутсвием возможности разбора дерева выражения. Ну и через костыли в принципе подключаемо к андроиду.
4) ну и конечно же async/await
представьте что вам нужно послать ассинхронный реквест и по приходу ответа обновить текст на UI:

android java:
client.sendRequest(request, new ResponseCallback() {
	@Override
	public void onResult(Object object) {
		currentActivity.runOnUiThread(new Runnable() {
			@Override
			public void run() {
				currentActivity.title.setText("done!");
			}
		});
	}
});

android C#:
var responseObj = await SendRequest(request);
//runOnUiThread не нужен т.к. await вернет первоначальный контекст
currentActivity.title.Text = "done"

Но это сравнивая решения в лоб без библиотек типа robospice, javaRX (за которую большое спасибо)
Аналог этого в C# тоже по сигнатуре выглядет страшно :)

IEnumerable<TResult> GroupBy<TSource, TKey, TElement, TResult>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, Func<TKey, IEnumerable<TElement>, TResult> resultSelector, IEqualityComparer<TKey> comparer)
Так и представляю в LinkedIn: место работы — АНБ, должность Шпион (года опыта) и скилы с рекомендациями.

Информация

В рейтинге
1 088-й
Зарегистрирован
Активность