Автоматты аударма пайдаланылды

X2 дамуын жеделдету

"Даму уақытын қысқартудың бір ғана жолы бар, ол онсыз да аз болған кезде — бағдарламаны жөндеу уақытын қысқарту."Томпкинс мырзаның дәптерінен. Deadline, Том ДеМарко

Қатесіз бағдарламалар жасауға бола ма?

Белгісіз мінез-құлықтан толығымен құтылу мүмкін емес екені анық . Алайда, сіз өз деңгейіңіздегі қателіктерден арылтатын құралды жасай аласыз. 

Менің атым Александр Козин, мен 1996 жылдан бері бағдарламалап келемін және 2008 жылдан бастап Apple қосымшаларын жасаймын. 

Жобаларға қатысты:

  • Western Union
  • Audi
  • YOTA
  • Bork
  • 2gis Flamp
  • Kings and Queens by David Starkey
  • Rema1000
  • 585 Алтын
  • Және басқа да көптеген

"Машина жасаудағы технологиялық процестер мен өндірістерді автоматтандыру" мамандығы бойынша институтты бітірген. Менің дипломдық жұмысым 2011 жылғы iOS жүйесінде Машина жасаудағы автоматтандыруға арналған сараптамалық жүйе болды. Бұл идея бағдарламалық жасақтаманы әзірлеу үшін сараптамалық жүйеге айналды.

Мен нақты айта аламын-барлық өнімдер ұқсас. Әрқайсысында біз құжаттамаға, бағалауға, коммуникацияға, жобалауға және әзірлеуге көп уақыт жұмсаймыз. 

Бүгін мен тек соңғы тармақты-кодпен жұмыс істеуді талқылауды ұсынамын. 

Тікелей Даму тек қана:

  • Жаңа функционал
  • Қателерді түзету 

Жаңа тапсырмаларды орындау көбінесе қызықты және қызықты. Ағынға кіру оңай. Жобаның басында қателер жоқ түзету үшін-уақыттың 100% - ы дамуға кетеді. 

Алайда, бұл процесте кемшіліктер сөзсіз жинақталады. Ұмытылған техникалық қарыз legacy-ге жабысады, логика монолитке айналады және жөндеуге кететін уақыттың пайызы кейде күрт өседі. 

Драмалық, айтпақшы, кодтың сапасына тікелей байланысты:

Томпкинс мырза қаламды қойды. Иә, бәрі де бар сияқты. Қателерді түзету және түзету үшін барлық уақыт пен ресурстардың жартысына жуығы қажет болғандықтан, керемет нәтижелерге қол жеткізу үшін Сіз жөндеуге бөлінген уақытты қысқарта аласыз. Бұл жағдайда дизайнға көбірек уақыт қалады. Ия, сіз онымен келісе алмайсыз.Deadline, Том ДеМарко
Жартысы! Шикі, Эдди Мерфиhttps://youtu.be/3dJzvpJF33g?si=bUgLBADjRY4mftov

Егер сіз ұзақ мерзімді жобаларда тепе-теңдікті сақтай алсаңыз жақсы. Алайда, іс жүзінде жөндеуге, мұраны қазуға және басқа да рефакторингке 80% - дан астам уақыт кетуі мүмкін. Қатынас негізінен қолданылатын шешімдердің сапасына байланысты-кодтың мақал-мәтелдік сапасы. Бұл құжатталған шындық.

Сонда неге кодтың сапасы әрдайым басымдыққа ие болады?

Жобаның басында бірден жылдам даму жылдамдығын алу өте қызықты. Уақыт өте келе қарқын төмендейді: жоғары сапалы шешімдерді қолданған кезде айтарлықтай емес және керісінше жағдайда.

Неліктен бұл орын алады?

Жаңа міндеттерді іске асыру уақыты қабылданатын шешімдердің сапасына тікелей байланысты:

Сондықтан бір тәжірибелі адамның бюджеті үшін екі орташа әзірлеушіні жалдау-бұл квадраттағы жаман идея. Өйткені, команданың көлемі ұлғайған сайын даму жылдамдығы экспоненциалды түрде төмендейді. Бірақ бұл мүлдем басқа әңгіме.

Біздікіне оралсақ, жобадағы уақыттың жартысын біз жұмсаймыз:

  • Қателер
  • Техникалық қарыз
  • Legacy

Сонымен, біз дамуды қалай жеделдетеміз? Том Демарконың орасан зор еңбегін еске түсіре отырып, бағдарламаларды қатесіз жазуға мүмкіндік беретін тәсілді табу керек. Немесе осы тәсілді қолданатын бағдарламалардың бөліктері. 

Хах, бұл өте оңай естіледі. Бірақ біз мұндай керемет тапсырманы қалай шешеміз?

Егер біз ең жақсы шешімдермен (жоғары сапалы код) тәсілді қолданатын болсақ, бұл автоматты түрде болады:

Қателерді түзету уақыты жаңа міндеттерді іске асыру мерзіміне қысым жасамайды, соларды жинақтай отырып, жедел жәрдемге өзгерістер енгізудің қажеті жоқ.қарыз. Ұмытылған Мәңгілік міндет-бұл мұраға айналмау. Profit.

Бізге қажет жоғары сапалы шешімдер тестілеу, қайта пайдалану, Қолдау және біріктіру оңай.

- Бірақ бір қатесіз кодты қалай жазуға болады?- Ал, қараңыз. Міне, сіз модульдердің бірінде қате таптыңыз. Бұл қате қайда?- Модульде.- Жоқ. Ол шекарада. Модульдің шекарасында. Әрине, модульдің ортасында жергілікті қателер бар, бірақ оларды ұстау және түзету оңай. Ең жасырын қателер, нақты, әзірлеушілерден көп уақыт пен күш жұмсайтындар модуль мен бағдарламаның қалған бөлігі арасындағы интерфейсте кездеседі.- Дұрыс, бұл бәріне белгілі. Ал не?Deadline, Том ДеМарко

Айтылды-жасалды! Бұл орынды шекараның өзінен тауып, осы қабатқа назар аудару ғана қалады. 

Қазіргі дамуда біз бәріміз архитектуралық үлгілерді қолданамыз: MVC, MVP, MVVM, VIPER, etc.

Олардың барлығы модельден басталады. Бұл оларды алуға арналған нысандар мен қызметтер. SDK және біздің модульдердің өзара әрекеттесу орны. 

Басынан бастау өте қисынды. Сонымен қатар, дәл осы қабатта қателердің концентрациясы максималды болады. Міне, ол Profit. 

Кез-келген мәселені шешу үшін мақсат қою керек. Олардың тек төртеуі бар:

  • TDD
  • Reuse
  • Update
  • Connect

Егер кодты қайта пайдалану қажет болса, онда ешқандай ақаулар болмауы керек. Және vice versa. Тексерілген кодты қайта пайдалану оңай-ол оқшауланған рет unit сынақтарымен жабылған және қапталған істерде қателер жоқ.

Мұндай кодты сақтау және жаңарту оңай. Одан әр түрлі логикалық блоктарды қолдана отырып күрделі конструкциялар жасауға болады. 

RBI-ге сәйкес (мінсіз түпкілікті нәтиже) бәрі бұрынғыдай болуы керек, бірақ зиянды, қажетсіз сапа жойылуы керек немесе жаңа, пайдалы сапа пайда болуы керек.Идеяны табу: ТРИЗГЕ кіріспе, Генрих Альтшуллер

Керемет Түпкілікті Нәтижені Елестетіп Көрейік:

Бағдарламалау тілі онда объектіні сипаттау жеткілікті оны ресурстардың минималды шығындарымен мүмкіндігінше тез алу үшін. 

Бағдарламалау теориясында бұл декларативті тіл деп аталады. Ол кез-келген нысанды құру және алу логикасын толығымен қамтиды.

Барлық платформалар үшін қолайлы:

/ / Бір геопозицияны, бір қадамдар жиынтығын, пайдаланушыны желіден алыңыз және Код блогын орындаңыз
Location.one | PedometerData.one | CurrentUser.one | .all {

}

// Теңшеу опциялары қажет емес нысан
|{ (result: Object) in
            
}

// Кіріс деректері бар Объект
ingredients | { (result: Object) in
            
}

// Бір, барлығы, шарт бойынша
ingredients | .one { (t: T) in
            
} | .every { (u: U) in

} | .while { (v: V) in
  true
}

Прототип Swift - те жұмыс істейді:

//Request current Location
|{ (location: CLLocation) in 

}

//Request .authorizedAlways permissions once
CLAuthorizationStatus.authorizedAlways | .one { (status: CLAuthorizationStatus) in
            
}

//Retrieve Pedometer Data updates
|{ (data: CMPedometerData) in 

}

//Scan for Bluetooth Peripheral
|{ (peripheral: CBPeripheral) in 

}

//Wait for a Notification
UIWindow.keyboardWillShowNotification | { (n: Notification) in
            
}

//Scan an NFC tag
|.every { (tag: NFCNDEFTag) in

}

//Perform Face Observation
URL(string: "http://example.com/image.jpg") | { (faces: [VNFaceObservation]) in

}

//Perform Pose Observation
//Wait for two persons
data | .while { (bodies: [VNHumanBodyPoseObservation]) in
    bodies < 2
}

//Detect shake
|{ (motion: UIEvent.EventSubtype) in
    if motion == .motionShake {
                
    }
}

Wand бұл декларативті тіл. Алдын ала өңдеу кезеңінде жергілікті кодқа аударылады. Android, Windows, Linux үшін іске асыру қорда жасалады.

OpenSource-те GitHub-та жалпы тапсырмаларға арналған ядро мен плагиндер бар:

https://github.com/The-Wand/Wand

Т-банктегі Краснодар Кофекодына арналған техникалық презентация және қалай:

https://www.youtube.com/playlist?list=PLvprpeoOl6IoZ67BcD-t0rS1L5c5J4lPh

Біз коммерциялық негізде қателері жоқ бизнес бағдарламаларын жасай аламыз және Wand үшін мұндай плагиндерді жеке сақтай аламыз. 

Ұзақ мерзімді жобаларда 50% тиімдірек. 

Кез-келген платформа үшін оңтайлы бағдарламаларды (RBI) құру туралы маған жазыңыз.

Пікірлер 1

Кіру пікір қалдыру үшін

Работает на публичных проектах для сети АЗС в Новосибирске, приложении для записи NFC меток и в официальном приложении Кубанского Государственного Технического Университета. AppClip доступен по ссылке в Safari: http://el-machine.com/tool

Жауап беру