Top.Mail.Ru

Перейти к содержимому

Фотография

Android Developer, стоит ли переучиваться?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 65

#61 hottabych

hottabych

    Снимаю, порчу. Трахаю, тибидохаю.

  • Полноправный
  • PipPipPipPipPip
  • 4 977 Cообщений
  • Регистрация: 21.08.13
2 482
Очень хороший
  • Пол:Мужчина
  • Город:Москва

Отправлено 21 декабря 2019 - 22:25

Да, я сначала не нашел энумы, (в курсе, который я смотрю, автор везде делает класс utils с кучей static final констант) и не нашел LINQ, но потом погуглил и выяснил, что в Java 8 сделали аналог - Stream API.

Вот чего точно не нашел:

В Java нет var. В C# можно написать var list = new List<String>(), он сам распознает тип, в Джаве так нельзя.

В Java нет async/await, есть только хэндлеры, и есть AsyncTask, которая ограничена по количеству одновременных задач.

Ещё мне не понравилось, что одним словом final помечаются и константы, и запечатанные классы, и запрещенные к переопределению методы. В C# это соответственно readonly, sealed и virtual/override.

В Java нет делегатов, то есть, ты не можешь написать свой метод типа

public void DoSomething(System.Action callback)
{
 // что-то делаем
 callback();
}

и в него подставить лямбду.

И соответственно, нет events с подпиской и отпиской, приходится писать классы, которые имплементируют Listener'ы.

Нет свойств.

Нет методов расширения.


  • 1

#62 К-1980

К-1980

    Глокая куздра штеко бодланула бокра и кудлачит бокрёнка

  • Перцы
  • PipPipPipPipPipPip
  • 5 198 Cообщений
  • Регистрация: 24.07.04
1 815
Очень хороший
  • Пол:Мужчина
  • Город:Москва

Отправлено 22 декабря 2019 - 00:33

Цитата

в курсе, который я смотрю, автор везде делает класс utils с кучей static final констант


Ну да, у тебя же курс по андроид-разработке - а в андроиде enum-ы  не используются из соображений большего расхода памяти:
https://developer.an...memory#Overhead
 

Цитата

В Java нет var.


Есть начиная с 10й жавы :)
 

Цитата

В Java нет async/await, есть только хэндлеры, и есть AsyncTask, которая ограничена по количеству одновременных задач.

Ненене. Есть же великая RxJava c Observer/Observable - c возможностью подписки на асинхронные события - причем поток событий может быть бесконечным - а из их обработчиков можно составлять композиции задач.
 

Цитата

Ещё мне не понравилось, что одним словом final помечаются и константы, и запечатанные классы, и запрещенные к переопределению методы.

Ну это скорее дело привычки.

 

Цитата

В Java нет делегатов, то есть, ты не можешь написать свой метод типа

У нас это есть начиная с 8й жавытолько называетя не делегатом а  фуекциональным интерфейсом:
    
 

void doSmth (Runnable callback){
      callback.run();
    }

Цитата

 

И соответственно, нет events с подпиской и отпиской, приходится писать классы, которые имплементируют Listener'ы.


Возможность подписаться -отписаться есть: В RxJava Observable::subscribe возвращает Subscribtion c возможносю отписаться.  
Но вообще надо смотреть зачем тебе лисенеры - как правило можно обойтись почти без них.

 

Цитата

Нет свойств.
Нет методов расширения.


Ну я не знаю что в шарпе под этим подразумевают-но почти уверен что есть аналог ;)
 


  • 0
The iggle squiggs trazed wombly in the harlish hoop

#63 hottabych

hottabych

    Снимаю, порчу. Трахаю, тибидохаю.

  • Полноправный
  • PipPipPipPipPip
  • 4 977 Cообщений
  • Регистрация: 21.08.13
2 482
Очень хороший
  • Пол:Мужчина
  • Город:Москва

Отправлено 22 декабря 2019 - 08:50

Цитата

 

 

Цитата

Ну я не знаю что в шарпе под этим подразумевают-но почти уверен что есть аналог ;)

 

 

Методы расширения -- можешь к ЛЮБОМУ классу, даже системному, дописать свой метод (которые будет использовать его открытые члены). Это не наследование, а именно расширение функционала, без залезания внутрь класса.

Пример расширения String:

    public static class StringExtension
    {
        public static int WordCount(this String str)
        {
            return str.Split(new char[] {' ', '.','?'}, StringSplitOptions.RemoveEmptyEntries).Length;
        }
    }

И далее String s = "Hello World"; int i = s.WordCount();

 

Свойства - обертка над полем. Выглядит как поле, но ведет себя как пара методов get и set.

private int health;
public int Health
{
   get
   {
      return health;
   }
   set
   {
      health = value;
      textView.setText(health);
   }
}

При обращении к нему дергается get, при присвоении - set.

На уровне компилятора, он всё равно это разворачивает в пару методов get и set.

И есть автосвойства. Делаешь такую запись, он сам и приватное поле создаст, и обращение к нему. Это если никакой более сложной логики не требуется.

public Health {get; private set; } 

В Джаве нет, есть просто методы геттеры и сеттеры.


  • 0

#64 К-1980

К-1980

    Глокая куздра штеко бодланула бокра и кудлачит бокрёнка

  • Перцы
  • PipPipPipPipPipPip
  • 5 198 Cообщений
  • Регистрация: 24.07.04
1 815
Очень хороший
  • Пол:Мужчина
  • Город:Москва

Отправлено 22 декабря 2019 - 22:33

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

 

На мой взгляд штука даже несколько вредная так как затрудняет чтение кода - фиг поймешь что это за метод wordCount и где искать его... ИМХО проще и логичнее вынести в класс StringUtil

 

как public static int wordCount(String str){...}

 

и вызывать соответственно StringUtil.wordCount("hello world"); - тут все понятнее, ИМХО.

Обертки над полем есть в Groovy - но мне они не очень там нравятся так как тоже сбивают с толку - думаешь что это обращение к полю а это вызов метода.

 

Вот чего в жаве было бы пожалуй неплохо добавить - это трейты как в Scala - это похоже на твои расширения но там нет магии когда ты где-о объявил статический метод и у тебя метод добавился - там ты явно указываешь что твой класс что-то наследует и подмешвает методы трейта

 

class SuperMan extends Man with SuperTrait {}


  • 0
The iggle squiggs trazed wombly in the harlish hoop

#65 hottabych

hottabych

    Снимаю, порчу. Трахаю, тибидохаю.

  • Полноправный
  • PipPipPipPipPip
  • 4 977 Cообщений
  • Регистрация: 21.08.13
2 482
Очень хороший
  • Пол:Мужчина
  • Город:Москва

Отправлено 23 декабря 2019 - 22:56

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

Material Design (а это огромная база всяких красивых контролов, по ней отдельный курс есть), тут только Recycler и CardView разобраны.

Далее Retrofit, JavaRx, Dagger... Kotlin тоже за вечер не выучишь. Нашел книжку на 300 страниц "Реактивное программирование в Kotlin".

Вопрос, до какого уровня надо доучиваться, чтобы взяли хотя бы джуном? Я чувствую, можно застрять в изучении надолго.

Что на собеседовании могут поспрашивать? В идеале бы сначала пристроиться хоть на какую зарплату, и потом on-job learning. На работе мне всё это намного быстрее покажут и донесут на реальных задачах, чем самому копаться.


  • 0

#66 К-1980

К-1980

    Глокая куздра штеко бодланула бокра и кудлачит бокрёнка

  • Перцы
  • PipPipPipPipPipPip
  • 5 198 Cообщений
  • Регистрация: 24.07.04
1 815
Очень хороший
  • Пол:Мужчина
  • Город:Москва

Отправлено 24 декабря 2019 - 14:33

Вот по моим ощущениям - у тебя уже нормальный уровень чтобы идти на джуна.
Программировать ты можешь - а все остальное уже доучивается по ходу дела - иначе на самом деле можно вечно учиться.
Я вообще не знал ничего про андроид-разработку до 1 апреля этого года когда попросили за 2 недели написать прототип приложения - ну я его и сделал - жуткий говнокод, весь биндинг и рендеринг руками прописывается и т.д. Потом летом добавилась работа с рест-вызовами - тоже длинная лапша каллбэков (к тому же приложение было не основной работой, делал когда время было). Ну параллельно прочитал курс на стартандроид - и вот на этой неделе наконец вермя нашлось - переписал весь датабиндинг, где-то треть кода выкинул. Добавил LiveData - уже приложение не так страшно выглядит.
Ну можешь еще пару неделек побаловаться - просто познакомиться с даггером, ретрофитом и арх компонентами - и начинать искать.

Кстати, а может на самом деле к нам попробуешь (попытка не пытка), если не смущает работа на госорганы. Сейчас в личку напишу.
А, и еще у нас очень много криптографии, это тоже по ходу дела надо учить.

 


  • 0
The iggle squiggs trazed wombly in the harlish hoop




Количество пользователей, читающих эту тему: 0

0