Pull to refresh
1
0

Руководитель разработки

Send message
Но и оговорку про поведение «как value type» уберите.
У вас не получилось.
str = «str2»;
эквивалентно «obj1 = obj2;», т.е. вы в переменную положили ссылку на другой объект.
Ваши выводы в примере говорят о том, что вы не знаете ни как работает String, ни как работает передача параметров в метод!

Вот вам альтернативный пример. Вы понимаете, почему вывод именно такой?
public class MyClass
{
    public string Str;
}

static void Main(string[] args)
{
    string s1 = "str";

    MyClass c1 = new MyClass { Str = s1 };
    var tmp = c1;
    void myMethod(MyClass my)
    {
        Console.WriteLine("ReferenceEquals('str', my.Str) => " + Object.ReferenceEquals("str", my.Str));
        // ==> true               

        Console.WriteLine("Object.ReferenceEquals(c1, my) => " + Object.ReferenceEquals(c1, my));
        // ==> true

        my = new MyClass { Str = "str2" };
        Console.WriteLine("ReferenceEquals('str2', my.Str) => " + Object.ReferenceEquals("str2", my.Str));
        // ==> true

        Console.WriteLine("Object.ReferenceEquals(c1, my) => " + Object.ReferenceEquals(c1, my));
        // ==> false
                
    }
    myMethod(c1);

    Console.WriteLine("Object.ReferenceEquals(c1, tmp) => " + Object.ReferenceEquals(c1, tmp));
    // ==> true

    Console.WriteLine(s1);
}
Во-первых, StringBuilder не при чём в дискуссии про value/reference type. Это отдельный класс, служащий своим целям.

Во-вторых, фраза
поведение string при сравнении (передаче в метод) совсем не как у reference type и больше похоже на value type:
не корректна. Не надо путать новичков, они потом это приносят на собеседовании и очень портят впечатление.

Я не единожды писал классы, которые
разные переменные с одинаковым значением при сравнении == дадут true, несмотря на то что ссылки у них разные
, и даже делал immutable классы. Ничто из это не имеет отношения ни к value type, ни к строкам.
Да уж, получился знатный список вопросов-маркеров, по которым можно отличать тех, кто только читал, от тех, кто использовал, и уже тем более от тех, кто понял.
Уровень описания в статье — junior.

Даже middle должен бы знать, что string ни разу не похож на value type. У этого типа есть две ключевые особенности: immutable (любое изменение порождает новый экземпляр) и оптимизация компилятором (если в коде встречается несколько раз один строковый литерал, после компиляции это будет один и тот же объект)

Так же middle должен понимать, для чего используются публичные методы object, и когда и для чего требуется их переопределять. И что GetHashCode надо переопределять совместно с Equals во избежание разногласий (но не для ускорения).

Список можно продолжить. Но я обычно задаю вопросы вразрез, кандидат сам расскажет, что понимает и шпаргалки не помогут. Например: когда (в каких случаях) ValueType хранится в куче? Занимает ли ReferenceType место на стеке? Всегда ли вызывается Dispose? С какими паттернами разработчик сталкивался на предыдущем проекте (к примеру, типичный asp.net-разработчик сталкивается как минимум с пятью паттернами, но чаще всего их в упор не видит) и т.д.
да, весьма существенные — одни минусы заменятся на другие, да и с плюсами то же самое.
Было бы плевать — вы бы тут об этом не писали.
Автор! Перестаньте выдавать свои однобокие и узкие суждения за истину!

Минусы есть? А то! Они везде есть. Но я не знаю ни одного разработчика, подпадающего более чем под два пункта из списка. Чаще всё совсем наоборот.
Это тоже было, но деталей не помню уже. Хотя калькулятор жив до сих пор :)
Автор, вы же все статьи написали заранее и при выкладке очередной никак не учитываете комментарии к предыдущим?

Ведь вам уже пояснили ранее, что ваше отношение к тестированию слишком однобокое, а статьи ваши не раскрывают сути проблем. Но вы продолжаете лепить кэповские статьи с минимумом реальной пользы.
А журналы «Наука и Жизнь»? :)
Тут не стоит забывать про контекст.
Я-то тоже первые четыре языка учил по книжкам (а ещё был пятый — для мк-61), т.к. интернета не было.
И да, есть такие языки, что лучше по книгам учить, но очень вряд ли это хороший выбор для первых языков?
Не только первый, но и смотрящий на систему/приложение под особым углом. А ещё он умеет проходит кейсы гораздо быстрее типичного программиста, а ещё безошибочно повторять предыдущие кейсы, и т.д.
Хороший тестировщик экономит кучу времени команде программистов! :)
Да, опять глупая и бесполезная статья. И опять неверно примерно всё.

Тестирование — скучно, только если это ручное исполнение автотестов. В реальности работа тестировщика бывает очень интересной.
И у разработчиков бывает крайне скучная работа.

Аналогично по всем пунктам…

А финализируется всё это традиционным для этого автора выводом:
Идти нужно туда, куда тебя с наибольшей вероятностью возьмут.


Вот после этого тонны вайтишников, которых выперли с первой работы за профнепригодность атакуют вакансии, запрашивая высокие зарплаты, которые им обещали авторы таких статей.
Да, конечно. Но в языках с нормальной типизацией меньше шансов, что пустая строка будет сложена с массивом и получится число просто потому, что где-то изменился формат данных и конкретный язык старательно игнорирует несоответствие типов :)
Чисто для прояснения. Вы путаете два типа типизации:
статическая/динамическая и слабая/сильная.

JavaScript — динамическая слабая (в рантайме типов, можно сказать, вообще нет).
C# — статическая слабая. И слабость не про var (который лишь упрощает вывод типов при компиляции), а про dynamic.
Очередной опус крайне низкого качества?

Книжки — хорошо, но они всегда отстают от жизни.
после программирование стало понятным и в какой-то степени примитивным.
Серьёзно? И вы при этом кому-то что-то советуете?
Установить PhpStorm на своей компьютер.
начинать можно и в блокноте или уже поставить что-то бесплатное. Например VsCode.
множество вторичных технологий, которые не относятся непосредственно к программированию, но обязательны в работе программиста:
Html;
Css;
JavaScript;
MySQL;
как так-то? первые две относятся только к фронтенду, а вторые две как раз про программирование!

Ну и финализирует всё это предложение выучить ответы на вопросы собеседований и таким образом пробраться на реальную работу…

Нет уж, лучше хорошие курсы, чем такое вот руководство!

Новая методология может и нужна, но ваша не взлетит.

Главная проблема — вы слишком всё в кучу смешали. Идея взять всё лучшее из других вариантов и сварганить что-то своё не нова, но обычно получается фигня.

Да и вообще, известно же, что нет идеальных решений, устраивающих всех. Кому подойдёт ваша методология?
Явно не крупному бизнесу, где гендир не будет фокусировать внимание на отдельных командах и сотрудниках. С мелким бизнесом тоже не очевидно — там могут реально не требоваться все эти роли.
А что на счёт типов проектов/продуктов? Для инновационных у вас слишком жёсткие правила, для стадии устойчивого развития много лишнего.

Список можно продолжать.

Ну и отдельно, по мелочам:
— Гендир, подглядывающий за всеми сотрудниками, особенно в курилке? Кто ж согласится так работать, кроме самого гендира-маньяка?
— Сторипоинты в часах и прямо в календарь планировать? Может вы не знаете, зачем эти SP появились и почему в agile не меряют часами?
— Тимлид, который контролирует, как бы чего не усложнилось в проекте, игнорируя бизнес-задачи?
— Зачем вам вообще спринты, если у вас нету " times & materials"?

и т.д…
Я не про то, заходят статьи или нет. Вторая статься пошла по пути первой — в минуса. Минус и статье и вам в карму. Вы говорите, что собираетесь и дальше публиковаться. Если статьи будут такие же, вы сольётесь до невозможности что-то публиковать.
И вот я спрашиваю, вам это зачем?
А для чего вам это? Если всё статьи этого же уровня качества, результат, наверно будет аналогичен…

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity