Код-ревью # 1 к таску учебного проекта
✖️// Убрать комментарии из кода
Код должен хорошо читаться без комментариев.
Если они нужны в сложном коде, то может лучше упростить код?!
✖️➡️ Не использовать SF Sombols
Брать то, что нарисовал дизайнер - сохранить иконку из фигмы и использовать ее на проекте.
📱 Добавить .DS_Store в .gitignore
Чтобы в репозиторий не валилось ненужное.
Хорошо бы еще после создания реквеста проверять какие файлы и какие изменения попали в реквест, нет ли там чего ненужного и сразу корректировать.
📝 Нейминг
Допустим, у нас компонента, реализующая круглую кнопку.
Если в проекте всего один тип круглых кнопок, то RoundButton вполне подойдет. Но если в проекте, например, два типа круглых кнопок, одна кнопка это "i" в кружочке, другая это кнопка для категорий, то тут круглота уже не сильно важна, и можно использовать InfoButton и CategoryButton, а если круглота важна, то InfoRoundButton.
То есть, нужно придумать название такое, чтобы прочитав только название было примерно понятно что это за кнопка такая, для чего она нужна.
Если компонента оформлена как вью, внутри сложная верстка из других элементов, но эта компонента по сути - кнопка, то нет особо смысла называть ее, например, InfoButtonView, "view" - тут лишнее.
Точно также с другими компонентами, если суть компоненты - текстфилд, то нет смысла называть ее SomeTextFieldView, достаточно SomeTexField.
Компонента с ...View на конце уместна, когда она сложное вью содержащее в себе кучу функционала, и нет возможности выделить ее главную особенность.
#iOSпоВзрослому@isilverdev
✖️// Убрать комментарии из кода
Код должен хорошо читаться без комментариев.
Если они нужны в сложном коде, то может лучше упростить код?!
✖️➡️ Не использовать SF Sombols
Брать то, что нарисовал дизайнер - сохранить иконку из фигмы и использовать ее на проекте.
Чтобы в репозиторий не валилось ненужное.
Хорошо бы еще после создания реквеста проверять какие файлы и какие изменения попали в реквест, нет ли там чего ненужного и сразу корректировать.
Допустим, у нас компонента, реализующая круглую кнопку.
Если в проекте всего один тип круглых кнопок, то RoundButton вполне подойдет. Но если в проекте, например, два типа круглых кнопок, одна кнопка это "i" в кружочке, другая это кнопка для категорий, то тут круглота уже не сильно важна, и можно использовать InfoButton и CategoryButton, а если круглота важна, то InfoRoundButton.
То есть, нужно придумать название такое, чтобы прочитав только название было примерно понятно что это за кнопка такая, для чего она нужна.
Если компонента оформлена как вью, внутри сложная верстка из других элементов, но эта компонента по сути - кнопка, то нет особо смысла называть ее, например, InfoButtonView, "view" - тут лишнее.
Точно также с другими компонентами, если суть компоненты - текстфилд, то нет смысла называть ее SomeTextFieldView, достаточно SomeTexField.
Компонента с ...View на конце уместна, когда она сложное вью содержащее в себе кучу функционала, и нет возможности выделить ее главную особенность.
#iOSпоВзрослому@isilverdev
Please open Telegram to view this post
VIEW IN TELEGRAM
iSilver dev 🍏 pinned «⬇️ НАВИГАЦИЯ ПО КАНАЛУ ⬇️ Как я начинал изучать Swift / iOS dev Как я выбирал Mac для изучения iOS dev Подборка курсов по iOS разработке Про Apple Developer Account - Регистрация - Enrolment - Оплатил аккаунт разработчика $99 - Полная история подключения…»
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
iSilver dev 🍏
⬇️ НАВИГАЦИЯ ПО КАНАЛУ ⬇️
Как я начинал изучать Swift / iOS dev
Как я выбирал Mac для изучения iOS dev
Подборка курсов по iOS разработке
Про Apple Developer Account
- Регистрация
- Enrolment
AI искусственный интеллект в iOS dev
- Интеграция ChatGPT…
Как я начинал изучать Swift / iOS dev
Как я выбирал Mac для изучения iOS dev
Подборка курсов по iOS разработке
Про Apple Developer Account
- Регистрация
- Enrolment
AI искусственный интеллект в iOS dev
- Интеграция ChatGPT…
Начал процедуру оплаты аккаунта разработчика.
UPD: оказывается не оплатил
Пришлось писать в ТП
UPD2: Всё закончилось хорошо
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Есть 2 подхода выполнения заданий:
- креативный
и
- жесткий
Креативный:
- допускаются вариации, улучшения - главное реализовать идею.
Подход в сторону развития навыков независимой разработки приложений (работать на себя)
Жесткий:
- строгое соблюдение макета: расположение, размеры, шрифты, картинки и тп.
Подход направленный на наемную работу, в командах, где за дизайн отвечает дизайнер, а разработчики должны точно воплотить утвержденный дизайн. Даже если он (дизайн) полное 💩, по мнению разработчика.
Если в планах устроиться на вакансию разработчика, всегда делай по 2 варианту, а первый по желанию (не обязательно).
И наоборот, улучшай, развивай креативность и взгляд со стороны пользователя.
- креативный
и
- жесткий
Креативный:
- допускаются вариации, улучшения - главное реализовать идею.
Подход в сторону развития навыков независимой разработки приложений (работать на себя)
Жесткий:
- строгое соблюдение макета: расположение, размеры, шрифты, картинки и тп.
Подход направленный на наемную работу, в командах, где за дизайн отвечает дизайнер, а разработчики должны точно воплотить утвержденный дизайн. Даже если он (дизайн) полное 💩, по мнению разработчика.
Если в планах устроиться на вакансию разработчика, всегда делай по 2 варианту, а первый по желанию (не обязательно).
И наоборот, улучшай, развивай креативность и взгляд со стороны пользователя.
✍1👍1
Существуют три основных размера
- SE
- Обычный или Pro
- Pro MAX
Нужно проверять как выглядит верстка на всех трех.
Особенно страдает верстка на SE, вы вроде сделали все по уму, а на SE треть экрана не видна, он короткий.
Обычно дизайнер не предоставляет макеты во всех форм-факторах, т.к. это тройная работа и, в большинстве случаев, отдается на откуп разработчику.
И только на сложных экранах с кучей элементов дизайнер поможет с расстановкой элементов под другие размеры экранов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
Вместо урока кастомизировал Терминал
Сел смотреть уроки по Git...
И подумал: мне же приходила в голову мысль кастомизировать Терминал, почему бы не сейчас?!
Установил:
- Терминал iTerm2
- Тема powerlevel10k
- Плагин zsh-syntax-highlighting
- LazyGit
🤷🏻♂️
UPD: установил плагин eza
Сел смотреть уроки по Git...
И подумал: мне же приходила в голову мысль кастомизировать Терминал, почему бы не сейчас?!
Установил:
- Терминал iTerm2
- Тема powerlevel10k
- Плагин zsh-syntax-highlighting
- LazyGit
🤷🏻♂️
UPD: установил плагин eza
Самая важная вещь для инди-разработчика, которая может быть у вас - это ни айфон, ни даже макбук, а -🎙 микрофон!
С тех пор как я создал свой YouTube канал, я увеличил свой доход с 10k$ до 70+k$!
Adam Lyttle - австралийский инди-разработчик
Пока просто создал и залил уроки с курса Angela Yu (без публичного доступа), для перевода с дубляжем, на Udemy - перевод видео не работает ((
Думаю иногда, а может и регулярно устраивать трансляции в формате "code with me".
Подпишись
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Текущий прогресс по курсам Swift
✔️ +1 16/100 - 100 дней SwiftUI
✔️ +0 17/39 - Усов книга 1
✔️ +2 5/29 - Angela Yu
🟩🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - 100 дней
🟩🟩🟩🟩🟩🟩⬜️⬜️⬜️⬜️ - Усов
🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️ - Angela Yu
Проект "iOS по взрослому"
- сделал таск "Верстка 0.1.1 Обычная кнопка"
Это первая задача в проекте, учится приходится многому:
- работать с Git и GitHub
- правильно именовать компоненты в коде
- правильно именовать ветки в Git
- правильно именовать pull-requests
Задания в курсе Angela Yu уже делал с учетом новых знаний работы с git, полученных в проекте iOS по взрослому.
Кстати, вписался в коллективное прохождение курса Angela Yu.
Суть: при выполнении заданий отработать методики работы в команде.
Делить задачу на таски (подзадачи).
Использовать Git и GitHub.
Обоюдный код-ревью.
Координация через YouGile.
И тп.
"iOS по взрослому"
- доработать таск "Верстка 0.1.1 Обычная кнопка" после код-ревью, исправить замечания.
- выполнить новый таск "Верстка 1.1 Онбординг"
Усов книга 1
- изучить 3 главы: enum, struct, class (44 стр.)
100 дней SwiftUI
- дни 17-18 App "Чек в кафе"
- день 19 App "Конвертер"
Новый Pet-проект (пока секрет)
- подготовить картинки
- начать верстку основного экрана
Ну что ж: погнали!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Несколько дней с Quitter
Мне сложно сфокусироваться на текущей работе/задаче, постоянно отвлекают уведомления и сообщения в мессенджерах, особенно в телеграм.
Настроил выход из приложений через 5 минут бездействия.
Результаты приятно удивили: ловил себя на мысли переводя на иконку Телеги - вау он же закрыт и не отвлекал меня все это время ))
Рекомендую
Скачать с сайта
#ПриложенияДляМака@isilverdev
#продуктивнось@isilverdev
Мне сложно сфокусироваться на текущей работе/задаче, постоянно отвлекают уведомления и сообщения в мессенджерах, особенно в телеграм.
Настроил выход из приложений через 5 минут бездействия.
Результаты приятно удивили: ловил себя на мысли переводя на иконку Телеги - вау он же закрыт и не отвлекал меня все это время ))
Рекомендую
Скачать с сайта
#ПриложенияДляМака@isilverdev
#продуктивнось@isilverdev
👍2
Как меньше залипать в iPhone
Настройки /
Универсальный доступ /
Быстрая команда /
Светофильтры
По 3-му нажатию на боковую кнопку экран iPhone станет черно-белым.
В результате все соцсети станут не такими красочными и интересными.
В продуктивных приложениях переключаемся обратно в цвет.
#продуктивность@isilverdev
Настройки /
Универсальный доступ /
Быстрая команда /
Светофильтры
По 3-му нажатию на боковую кнопку экран iPhone станет черно-белым.
В результате все соцсети станут не такими красочными и интересными.
В продуктивных приложениях переключаемся обратно в цвет.
#продуктивность@isilverdev
За 2 дня внес исправления по 24 32 42 замечаниям к коду!
Всего лишь кнопочки делаю...
Некоторые примеры замечаний:
Лучше отказаться от enum в пользу struct, так как расширять enum в случае появления дополнительных стилей будет сложнее, чем дописать extension к struct.
Название кнопки можно конечно задавать через init, но лучше вывести его отдельно, например, в онбординге на последнем экране кнопка та же, а название у нее другое, нужно иметь возможность у готовой компоненты поменять название.
Здесь и в других местах кода не позволять ломать отступы. Вот так выглядит намного удобнее для чтения:
НО Если параметр один или два и они влезают в 100 символов по ширине не надо переносить на новую строку.
MainButton непоходящее название.
Что-то вроде CornersButton или как-то так более понятно что это за кнопка.
CornersButtonStyle - вынести в отдельный одноименный файл, создать папку (group) "CornersButton"
Можно сделать проще, заверстать и левую и правую иконки сразу.
И прятать через hidden ненужную.
И не надо будет возиться с инсертами и ремувами сабвью.
Как же кайфую от количества полезной инфы на практике!
🔥 🔥 🔥
Всего лишь кнопочки делаю...
Некоторые примеры замечаний:
Лучше отказаться от enum в пользу struct, так как расширять enum в случае появления дополнительных стилей будет сложнее, чем дописать extension к struct.
Название кнопки можно конечно задавать через init, но лучше вывести его отдельно, например, в онбординге на последнем экране кнопка та же, а название у нее другое, нужно иметь возможность у готовой компоненты поменять название.
Здесь и в других местах кода не позволять ломать отступы. Вот так выглядит намного удобнее для чтения:
private func setupButton(
style: ButtonStyle,
title: String,
icon: ButtonIcon?,
iconPosition: IconPosition
) {
// some code
}
НО Если параметр один или два и они влезают в 100 символов по ширине не надо переносить на новую строку.
MainButton непоходящее название.
Что-то вроде CornersButton или как-то так более понятно что это за кнопка.
CornersButtonStyle - вынести в отдельный одноименный файл, создать папку (group) "CornersButton"
Можно сделать проще, заверстать и левую и правую иконки сразу.
И прятать через hidden ненужную.
И не надо будет возиться с инсертами и ремувами сабвью.
leftIconImageView.isHidden = position == .right
rightIconImageView.isHidden = position == .left
Как же кайфую от количества полезной инфы на практике!
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбирался с git - как организовать тестирование кнопок-компонент и не пушить на GitHub тестовые экраны.
Вроде разобрался:
- Создать компонент в ветке разработки компоненты
- Создать ветку тестирования
- Создать в ветке тестирования экраны для тестов кнопок
- Внести изменения в компоненты кнопки
- Сделать commit изменений
- Перейти обратно в ветку разработки компоненты
- перенести только нужные файлы компоненты из ветки тестирования:
- делаем commit изменений в ветке разработки компоненты
- пушим изменения на GitHub
Вроде разобрался:
- Создать компонент в ветке разработки компоненты
- Создать ветку тестирования
- Создать в ветке тестирования экраны для тестов кнопок
- Внести изменения в компоненты кнопки
- Сделать commit изменений
- Перейти обратно в ветку разработки компоненты
- перенести только нужные файлы компоненты из ветки тестирования:
git checkout ветка-тестирования -- путь/файл.swift путь/файл.swift
- делаем commit изменений в ветке разработки компоненты
- пушим изменения на GitHub
Взаимодействию с ИИ надо тоже учиться
Должно быть хотя бы базовое понимание принципов работы ИИ и разницы в моделях.
Получать адекватный ответ от ИИ без получения навыков взаимодействия с ИИ самонадеянно.
Вот хороший сайт, чтобы получить базовые представления о промптинженерии:
https://www.promptingguide.ai/ru
UPD: ресурс большой, решил добавить себе в программу обучения.
Должно быть хотя бы базовое понимание принципов работы ИИ и разницы в моделях.
Получать адекватный ответ от ИИ без получения навыков взаимодействия с ИИ самонадеянно.
Вот хороший сайт, чтобы получить базовые представления о промптинженерии:
https://www.promptingguide.ai/ru
UPD: ресурс большой, решил добавить себе в программу обучения.
www.promptingguide.ai
Руководство по промпт-инжинирингу | Prompt Engineering Guide
A Comprehensive Overview of Prompt Engineering
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾3
Подключение к App Store Connect
Хронология
6 дек 24 - Регистрация Apple Developer Account
10 дек 24 - Apple Developer Program Enrolment
13 мар 25 - Заказ
18 мар 25 - Письма нет
19 мар 25 - Что-то пошло не так, попробуйте еще раз
20 мар 25 - Welcome to the Apple Developer Program.
UPD: 24 мар 25 - Соглашение о платных приложениях
Хронология
6 дек 24 - Регистрация Apple Developer Account
Все требования выполнил, но...
"We are unable to process your request.
An unknown error occurred."
Написал в поддержку
10 дек 24 - Apple Developer Program Enrolment
Поддержка ответила, что было бы неплохо проверить соответствие кода страны проверенного номера телефона с регионом аккаунт Apple.
Проверил, исправил...
13 мар 25 - Заказ
App Developer отправлял на сайт, там жамкнул оплатить ($99), ввёл карту, получил письмо "Order Acknowledgement" - ждите пару дней.
18 мар 25 - Письма нет
Письма подтверждения нет, деньги с карты НЕ списались. Написал в поддержку.
19 мар 25 - Что-то пошло не так, попробуйте еще раз
Пришел ответ: ваш платеж не был успешно завершен. Для решения этой проблемы с оплатой мы рекомендуем вам отправить новую регистрацию с помощью приложения Apple Developer.
Видимо что-то подкрутили, и появилась возможность оформить подписку через приложение.
Но цена стала 119,99 US$
20 мар 25 - Welcome to the Apple Developer Program.
Пришло письмо добро пожаловать и открылся доступ на сайте.
UPD: 24 мар 25 - Соглашение о платных приложениях
👌1
(Курс Angela Yu)
Для базового понимания - ок.
Для нормальной работы - надо больше, в тч практики. А практики в Git сейчас у меня навалом в проекте "iOS по взрослому".
Сегодня например с git merge разбирался, особенно когда он получился не очень и пришлось откатывать в состояние до.
Сегодня в одном из чатов прислали годный пост совет по сообщениям в коммитах, ниже поделюсь.
Please open Telegram to view this post
VIEW IN TELEGRAM