Наскоро страхотен разработчик, записан в моята седмична Лаборатория за компютърни науки на iOS се обърна към мен с връзка как да напиша популярен алгоритъм в Swift. Тъй като преглеждаме подобни концепции в клас, бях заинтригуван и продължих да проверявам подробностите. Въпреки че есето получи много гледания (харесвания), настъпи разочарование, тъй като разбрах, че липсват части, че са лошо комуникирани и технически непълни. В подкрепа на моите предположения, авторът не успя да отговори на въпроси, зададени от членове на публиката.

Обичайно е разработчикът да бъде помолен от ръководител на проекта или заинтересована страна да „кодифицира“ някакъв нов процес или бизнес правило. Много решения могат да бъдат изпълнени чрез предварително дефинирани функции на SDK Framework или библиотеки на трети страни. Друг път трябва да запретнем ръкави и да помислим как може да работи дадена система или процес. По същество това е стойността, която придаваме на бизнес или проект. В резултат на това, ето пет съвета, които трябва да имате предвид, когато пишете свои собствени алгоритми. Тези предложения могат да бъдат приложени по време на техническо интервю или когато планирате следващия си проект.

Разберете процеса

Докато пишете вашите алгоритми, значителен фокус трябва да бъде насочен към разбирането на системата или процеса, който се опитвате да заснемете. Колкото повече познавате входящите и изходящите потоци на данни за процесите, толкова повече ще направите добър избор при проектиране и внедряване. Като част от това, уверете се, че можете напълно да опишете бизнес процеса, преди да ангажирате нещо с код (тук бялата дъска е полезна). Когато кодирате нов алгоритъм или метод, може да няма прецедент или дефиниран стандарт. В резултат на това винаги е добра практика да събирате много подробности, за да прецизирате внедряването си. Помислете за следното предизвикателство:

let sequence = [8, 2, 9, 10, 6, 7]
//challenge: write an algorithm to return the largest collection value

Оедин от готините аспекти на разработката на софтуер е прилагането на различни техники за решаване на проблем. Например, човек може да реши този въпрос, като напише функция за сортиране. Въпреки че сортирането на масива несъмнено ще разкрие най-голямата стойност, то също така значително ще повлияе на производителността, тъй като дори сложните решения за сортиране работят за O(n log n) време. Въпреки това, ако преразгледаме въпроса, имайте предвид, че не изисква да сортираме всички стойности.

Като алтернатива можем да използваме предоставените подробности за рационализиране на нашия алгоритъм. Например, това може да приложи по-ефективна форма на „запаметяване“ или може би да преинтерпретира колекцията като „дървовидна структура“.

Придържайте се към най-добрите практики

Като разработчици често чуваме фразата „най-добри практики“. Макар и почти клише, следването на приет стандарт осигурява отлична основа за предаване на идеи. Като разработчици на iOS ние също имаме стандарти за това, което искаме да виждаме. Като автор и педагог, ето някои критерии, които използвам:

  1. Премахнете декларацията и използването на имплицитно разопаковани опции
  2. Осигурете използването на върнати стойности, декларирани от сигнатури на функция/метод
  3. Преработете персонализирани структури от данни, за да поддържате общи типове
  4. Пренапишете рекурсивните алгоритми като итеративни конструкции
  5. Осигурете коментари за кода и документация за сложни алгоритми
  6. Напишете поддържащи тестови случаи на единица, когато е приложимо

С изключение на опциите за Swift, тези дейности с най-добри практики са до голяма степен независими от езика, което означава, че могат да се прилагат към различни проекти или дори към други езици за програмиране. Въпреки че вашите насоки може да се различават, вниманието към малките детайли ще изплати дивиденти, когато кодът ви в крайна сметка бъде повишен в производствена среда или бъде преработен.

Разберете сложността

Когато работите с други, които се подготвят за техническо интервю, много се набляга на подхода на кандидата за решаване на проблем. Както беше обсъдено, рядко има универсален модел при разработването на код, така че често сме изправени пред избора на най-добрия метод. Това е мястото, където идва доброто разбиране на Big-O Notation. Като сте в състояние обективно да сравнявате и контрастирате решения въз основа на тяхното пространство или ефективност на производителността, ще бъдете по-квалифицирани да идентифицирате код, който могат да бъдат рационализирани, за да отговорят на изискванията.

Предвидете рефакторинг на кода

Като разработчици на софтуер, ние сме доста запознати с променящите се бизнес изисквания, както и технологии. Като част от това трябва да се стремим да напишем код, който е разширим и може да бъде променян с малко прекъсване. На езика на Swift голяма част от това може да се постигне чрез „Generics“ и рефакторинг на кода, за да поддържа подход, ориентиран към протоколи. Както повечето от нас знаят, протоколите на Swift не само дефинират правила (съответствие), но също така могат да реализират поведение чрез прилагането на „протоколни разширения“. Примери за това могат да се видят чрез основните елементи на Comparable, Equatable и Hashable.

Валидирайте работата си (с други)

В наши дни ползите от сътрудничеството с колеги са по-ценени от всякога. Дори в работата ми възможността да се свързвам с колеги разработчици ми позволява да:

  1. Придобийте нова гледна точка към решенията за предизвикателства с код
  2. Създайте нов код, както и учебни материали въз основа на зададени въпроси
  3. Идентифицирайте грешки или пропуснати крайни случаи в съществуващия изходен код
  4. Научете нещо ново!

В обобщение

  • Разберете системата или процеса, който се опитвате да документирате
  • Пишете код, който е лесен за разбиране, спазва приетите най-добри практики и използва сравнително ясен синтаксис на кодиране
  • Разберете времевата и пространствената сложност на Big-O Notation на вашето решение
  • Планирайте вашия код да бъде преработен
  • Валидирайте работата си с връстници и колеги в разработката

Вземете безплатния работен лист за интервю за iOS

Трябва да се подготвите за следващото си техническо интервю? Предлагаме безплатно изтегляне от 5 страници със съвети и трикове, които да ви помогнат да постигнете успех. Когато се регистрирате чрез тази връзка, ще ви изпратим работния лист в PDF формат.