Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Резюме для программиста

89957   10 11 12 13 14 15 16 17 18 19 20 все
alex445 местный житель18.08.21 02:01
NEW 18.08.21 02:01 
в ответ AlexNek 17.08.21 22:06, Последний раз изменено 18.08.21 02:07 (alex445)
В WPF тоже нет выпадающего списка объектов
А это тогда что? С решарпером и без него

Не это. Наведите на байндинг. Если контекст данных установлен ранее, то по идее движок дизайнера XAML должен знать, что за тип будет байндиться, и выдавать подсказки по публичным полям этого объекта при установке байндинга. А он не выдаёт.


Сишарп только относительно недавно (с 6 версии, с 2015 года) избавился от необходимости передавать названия элементов языка строками вручную. А атрибут CallerMemberName позволил избавиться от передачи вручную строкового имени изменяемого свойства при реализации INotifyPropertyChanged. В идеале ничего строкового вообще не должно передаваться вручную - чревато ошибками и нужно помнить или постоянно подсматривать названия. Один этим атрибутом столько лишней мелочной рутинной работы убрали, которая просто забивала код ненужной фигнёй, а программиста постоянно отвлекала. Но почему-то это всё появилось спустя более 10 лет после выхода дотнета.

alex445 местный житель18.08.21 02:08
NEW 18.08.21 02:08 
в ответ AlexNek 17.08.21 21:52, Последний раз изменено 18.08.21 02:12 (alex445)
то ну их нафиг, голову себе забивать.
Это только на вашем острове так можно.

Вы именуете переменные-члены класса с подчёркивания?


Помню, для специальной реализации обработки событий в борладовском варианте C++ были так называемые fastcall функции, которые начинались с двойного подчёркивания.

_fastcall, __fastcall - RAD Studio (embarcadero.com)

Программист коренной житель18.08.21 07:22
NEW 18.08.21 07:22 
в ответ alex445 17.08.21 17:35

Я не сталкивался с Юнити, но :)


В Юнити в скриптах нет свойств, поэтому используются данные-члены класса непосредственно.

Т.е. в Юнити нет пропертей?


И кроме того, чтобы эти данные-члены были доступны в самом Юнити при настройке объектов, их нужно делать открытыми. Понимаете? - Открытые данные-члены класса.

В С++ тоже нет пропертей, однако это не мешает писать код в соответствии со всеми правилами ООП. Более того, проперти - это "синтаксический сахар", не более того :)


Это смертельный грех для ООП.

Смертельный грех - нарушать инкапсуляцию, т.е. раскрывать устройство класса.


И меня всегда это тяготило - во-первых, кроме этой конвенции нет больше никакого контроля - ни встроенного в язык, ни в IDE - что начинающиеся с подчёркивания имена - члены именно этого класса.

Это просто договоренность. При этом договоренность внутри команды. Проперти (публичные переменные) пишутся с заглавной буквы, приватные переменные - с подчеркивания или с "m_", локальные - с прописной буквы. При этом кто-то еще и венгерскую нотацию использует.


AlexNek патриот18.08.21 14:47
AlexNek
NEW 18.08.21 14:47 
в ответ alex445 18.08.21 02:01
Не это. Наведите на байндинг.


Не играет рояли на куда наводить везде показывает, решарпер конечно лучше смущ

AlexNek патриот18.08.21 14:48
AlexNek
NEW 18.08.21 14:48 
в ответ alex445 18.08.21 02:08
Вы именуете переменные-члены класса с подчёркивания?

раньше когда-то "м" было теперь "_".

alex445 местный житель19.08.21 13:12
NEW 19.08.21 13:12 
в ответ AlexNek 18.08.21 14:47, Последний раз изменено 19.08.21 13:17 (alex445)
Не играет рояли на куда наводить везде показывает, решарпер конечно лучше смущ

Это у вас список свойств и метедов объекта, который вы привязываете?


В Юнити в скриптах нет свойств, поэтому используются данные-члены класса непосредственно.
Т.е. в Юнити нет пропертей?

Я поспешил и неправильно сказал. Там свойства есть, но почему-то они нарушают правило именования CamelCase и пишут их с большой буквы.


Кроме того, чтобы в редакторе Юнити эти свойства у объектов появились, их надо делать открытыми полями


"In C#, you must declare a variable as public to see it in the Inspector." Unity - Manual: Variables and the Inspector (unity3d.com)


Либо можно закрытыми и добавить открытых свойств над этим полем (как привыкли в обычном дотнете), но тогда поле сделать сериализуемым - например, добавить атрибут сериализации. Это потому, как я понял, что Юнити получает объекты из скрипта сишарпа через сериализацию. Многим от сишарпа в Юнити не надо сильно уж мощного ООП, поэтому между двумя следующими вариантами они выбирают тот, что короче и проще:


[SerializeField]
private int foo; 

public int Foo
{
    get { return foo; }
    set { foo = value; }
}
public int foo;
alex445 местный житель19.08.21 13:15
NEW 19.08.21 13:15 
в ответ alex445 19.08.21 13:12, Последний раз изменено 19.08.21 13:19 (alex445)

А вот как в самом Юнити выглядят свойства (т.е. это их код - создателей Юнити):


public sealed class GameObject : Object
{
    public GameObject();


    public Transform transform { get; }
    public int layer { get; set; }
alex445 местный житель19.08.21 13:23
NEW 19.08.21 13:23 
в ответ alex445 19.08.21 13:15, Последний раз изменено 19.08.21 13:24 (alex445)

Типичный способ правильно писать игры на Юнити, как я понял - писать всю игровую логику в отдельной сборке на шарпе по всем правилам шарпа, а скрипты Юнити использовать как своего рода вью модель (если мы о MVVM), в которую передавать объекты из сборки с логикой игры (т.е. модель). Новички или те, кто создают простые примеры, пишут всё в файлах скриптов. Это как писать логику десктопного приложения в слое с обработчиками событий интерфейса.

AlexNek патриот19.08.21 13:43
AlexNek
NEW 19.08.21 13:43 
в ответ alex445 19.08.21 13:12
список свойств и методов объекта, который вы привязываете?

Да, список возможных команд в данном случае


Там свойства есть, но почему-то они нарушают правило именования CamelCase

По идее там Паскаль-кейс

https://docs.microsoft.com/en-us/dotnet/csharp/fundamental...

alex445 местный житель19.08.21 14:04
NEW 19.08.21 14:04 
в ответ AlexNek 19.08.21 13:43, Последний раз изменено 19.08.21 14:14 (alex445)
Там свойства есть, но почему-то они нарушают правило именования CamelCase
По идее там Паскаль-кейс

Вобщем, свойства там с маленькой буквы, данные и методы должны быть открытыми, чтобы быть видны в самом Юнити.


Если придерживаться шаблона MVVM или в принципе разделения на слои, то логично. По разным причинам у слоя с графикой (вью) могут быть свои требования к оформлению кода и как и какие данные должны быть объявлены. Поэтому пишется своя вью модель для каждого типа представлений - для адаптации данных модели к представлению. Для Юнити вот такие требования, как выше, для WPF - свои, типа реализации INotifyPropertyChanged, команд и т.п.


Можно написать приложение многослойное, где в одной сборке будет общая логика и несколько сборок - под разные типы клиентской графики (WPF, веб, Юнити). В моём проекте были такие слои как DB (MS SQL Server), ORM (C# Entity Framework Code First), Model (C#), DTO (C#, JSON), View Model (C#), View (WPF, HTML, JS, CSS), ну и слой для общения с железками Лабвью, где была бинарная сериализация по кастомному протоколу.

alex445 местный житель21.08.21 08:37
NEW 21.08.21 08:37 
в ответ alex445 19.08.21 14:04, Последний раз изменено 21.08.21 08:40 (alex445)

Тут в некоторых вакансиях встречаются такие требования как Visual Studio 2015. Я не знаком подробно с лицензионным соглашением по Студии (последнее время только с коммьюнити эдишн работал, а до этого была купленная предприятием версия) - там лицензии покупаются на одну конкретную версию, и любая более новая - только через дополнительные траты? Просто сидеть на версии 2015 сейчас - сплошная боль. Да и не поразрабатываешь нормально на ней - фреймворк не выше 4.6.х, версия языка 6, 10 винды нет, коре всякие - только первая версия. Явно проект какой-то доисторический.


Не, отказаться от возврата кортежей из функций я уже не готов. ))

AlexNek патриот21.08.21 13:34
AlexNek
NEW 21.08.21 13:34 
в ответ alex445 21.08.21 08:37
Просто сидеть на версии 2015 сейчас - сплошная боль

Конечно, но это исходит от требования - WPF спок

Сейчас все на Ангуляре помешаны.

Программист коренной житель23.08.21 07:33
NEW 23.08.21 07:33 
в ответ alex445 21.08.21 08:37
Тут в некоторых вакансиях встречаются такие требования как Visual Studio 2015.

Эти требования можно пропускать :)


там лицензии покупаются на одну конкретную версию, и любая более новая - только через дополнительные траты?

Дело не в тратах на софт (тем более, что многие просто покупают подписку), дело в тратах на переход на новый софт. Для того, чтобы сменить среду разработки должны быть очень веские основания. Т.е. новая среда должна что-то добавить. У нас в проекте используется VS2015 и переходить на что-то более новое просто нет смысла. На прошлом проекте мы перешли на VS2015 (не помню уже с какой) ради TestCoverage.


Просто сидеть на версии 2015 сейчас - сплошная боль.

Ошибаешься. Вообще никакой разницы, что 2015, что 2019 :D


Да и не поразрабатываешь нормально на ней - фреймворк не выше 4.6.х

Фреймворк можно доустановить. У меня доустановлен 4.8 и все работает ;)


версия языка 6

Я особенно не слежу, но ограничений что-то не помню :)


10 винды нет

Поясни. Сейчас вообще никакой винды, кроме 10 нет :)


коре всякие - только первая версия.

Доустанавливается, как и фреймворк.


Явно проект какой-то доисторический.

Как и подавляющее количество всех проектов на рынке :D

alex445 свой человек23.08.21 08:27
NEW 23.08.21 08:27 
в ответ Программист 23.08.21 07:33
Да и не поразрабатываешь нормально на ней - фреймворк не выше 4.6.х

Фреймворк можно доустановить. У меня доустановлен 4.8 и все работает ;)


версия языка 6

Я особенно не слежу, но ограничений что-то не помню :)


10 винды нет

Поясни. Сейчас вообще никакой винды, кроме 10 нет :)

Там зависимости версии Студии и фреймворка. Разве что от версии Виндовс не так сильно зависит (самое последнее ставится на Win 7 SP1).

.net - What are the correct version numbers for C#? - Stack Overflow

.NET Framework version history - Wikipedia

Программист коренной житель23.08.21 09:07
NEW 23.08.21 09:07 
в ответ alex445 23.08.21 08:27

Это у меня на VS2015. Что я делаю не так? :)

alex445 свой человек23.08.21 11:15
NEW 23.08.21 11:15 
в ответ Программист 23.08.21 09:07, Последний раз изменено 23.08.21 11:17 (alex445)

Не знаю. Магия какая-то. А оно точно создаётся - проекты на 4.8 под 2015? Фреймворк, допустим, в системе, а Студию попросит обновить, может быть? Не просто же так табличку совместимости составили.


Я знаю, что можно на новой Студии старые фреймворки использовать. А чтобы наоборот - смысл тогда Студии покупать-обновлять каждые 2-3 года? Народ бы сидел по 5-10 лет.


Таблица совместимости студий и версий фреймворка

Microsoft Visual Studio - Wikipedia

Программист коренной житель23.08.21 12:17
NEW 23.08.21 12:17 
в ответ alex445 23.08.21 11:15

Ну может быть "no add-on" означает что-то вроде "из коробки"?

Я у себя клачаю на "Install other frameworks..." и меня перекидывает сюда. Скачиваю фреймворк (developer pack) и вуаля.


смысл тогда Студии покупать-обновлять каждые 2-3 года? Народ бы сидел по 5-10 лет.

Так никто каждые 2-3 года и не обновляет :) И никто не переходит на новый фреймворк просто из-за того, что вышла новая версия :) Для перехода всегда есть очень серьезные причины. И выход новой версии какого-либо продукта не является серьезной причиной :D

AlexNek патриот23.08.21 13:13
AlexNek
NEW 23.08.21 13:13 
в ответ Программист 23.08.21 09:07

Проблема поиметь верхушку

2019

2022

alex445 свой человек25.08.21 10:14
NEW 25.08.21 10:14 
в ответ AlexNek 23.08.21 13:13, Последний раз изменено 25.08.21 10:15 (alex445)

Вобщем, некоторые эйчары упорно требуют Arbeitszeugnis, даже если я им пишу, что опыта в Германии нет. Короче, как я понял, им нужна любая бумага от прошлого работодателя - просто эйчарам, похоже, премии дают, если они заполняют свои базы резюме наиболее полно (чтобы всё по пунктам было, и пофиг, что часть из них нелогична).


Таким отсылаю перевод своей Arbeitsbuch, т.к. это по сути единственная бумага от прежнего работодателя в России, а рекомендательные письма в России не принято давать-писать.

AlexNek патриот25.08.21 13:30
AlexNek
NEW 25.08.21 13:30 
в ответ alex445 25.08.21 10:14
я им пишу, что опыта в Германии нет

Это не вписывается в их алгоритм работы. Нужно писать, типа, что согласно законам страны предыдущего пребывания для Arbeitszeugnis имеется только трудовая книжка.