ປະສົບການໃນການຂຽນໂປຼແກຼມ Android ທີ່ຫາເງິນໄດ້ຍາກ

ຂໍ້ຄວາມນີ້, ຄືກັບທ້າວ Kent Beck ເວົ້າໃນຮູບແບບການຈັດຕັ້ງປະຕິບັດປຶ້ມຂອງລາວ, "... ແມ່ນອີງໃສ່ການສະແດງທີ່ອ່ອນແອຫຼາຍວ່າລະຫັດທີ່ດີ ... ". ແຕ່ພວກເຮົາທຸກຄົນຮູ້ວ່າລະຫັດທີ່ສະອາດເປັນເລື່ອງທີ່ພວກເຮົາຕ້ອງໄດ້ປະຕິບັດມາເປັນເວລາດົນນານກັບການຂາດຂອງມັນ. ແລະ Kent ບໍ່ຄືກັນ.

Kent Beck

ມູນຄ່າທັງ ໝົດ ຂອງການເປັນເຈົ້າຂອງລັງກິນອາຫານ

ສອງສາມປີກ່ອນ, ຄືກັບນັກພັດທະນາ Android ທີ່ບໍ່ມີປະໂຫຍດທຸກຄົນທີ່ເຮັດວຽກໃນການເລີ່ມຕົ້ນຂັ້ນຕົ້ນໃນປະເທດອິນເດຍ, ຂ້ອຍໄດ້ພະຍາຍາມ“ hack” ບັນຫາໂລກທີ່ແທ້ຈິງ, ເພື່ອ“ ອຸດສາຫະ ກຳ ລົບກວນ” ແລະວາງ“ ຈັກກະວານ”. ໂດຍບໍ່ມີການເບິ່ງແຍງໃນໂລກກ່ຽວກັບການອອກແບບຫລືສະຖາປັດຕະຍະ ກຳ ຊອບແວທີ່ດີ, ຂ້ອຍເລີ່ມຂຽນລະຫັດເພື່ອສ້າງແອັບ Android Android ເຊິ່ງມື້ ໜຶ່ງ ຈະກາຍເປັນ ໜຶ່ງ ໃນແອັບ he ຜູ້ບໍລິໂພກທີ່ໃຫຍ່ທີ່ສຸດໃນອິນເດຍ.

Sprint ຫຼັງຈາກ sprint, hack ຫຼັງຈາກ hack, ຄຸນລັກສະນະຕ່າງໆໄດ້ຖືກສ້າງຂຶ້ນໃນຄວາມອິດເມື່ອຍ. ສ້າງ. ມາດຕະການ. ຮຽນຮູ້. ເວລາໄປຕະຫຼາດແມ່ນມີຄວາມ ສຳ ຄັນແລະທຸກໆມື້ ສຳ ຄັນ. ເວລາຜ່ານໄປ, ພວກເຮົາໄດ້ເຕີບໃຫຍ່ຂື້ນໃນອັດຕາຂອງສະມາຊິກທີມ 1 ຄົນທຸກໆ 6 ເດືອນແລະແອັບໄດ້ກົດປຸ່ມດາວໂຫລດຫລາຍລ້ານ.

ດາວໂຫລດແລະໃຫ້ຄະແນນຂອງຮ້ານຫຼິ້ນ Google Play ຂອງພວກເຮົາ.

ໃນເວລານີ້, ແອັບ had ໄດ້ຢຸດເຊົາການເປັນສິ່ງທີ່ບໍ່ ສຳ ຄັນແລະມັນໄດ້ກາຍເປັນລູກຄ້າທີ່ມີຜູ້ເຊົ່າຫລາຍຄົນ, ຖ້າວ່າມັນແມ່ນສິ່ງນັ້ນກໍ່ຕາມ. ຄຸນນະສົມບັດທີ່ຈະໃຊ້ເວລາຫລາຍຊົ່ວໂມງເມື່ອພວກເຮົາເລີ່ມຕົ້ນດຽວນີ້ໃຊ້ເວລາຫລາຍມື້, ບາງຄັ້ງເປັນອາທິດ. ທຸກໆກິດຈະ ກຳ ແມ່ນ 1000+ ຂອງລະຫັດ spaghetti ເນື່ອງຈາກ Android ປະກົດຕົວບໍ່ກັງວົນຫຼາຍເກີນໄປກ່ຽວກັບການແຍກຄວາມກັງວົນ. ຄ່າໃຊ້ຈ່າຍທັງ ໝົດ ຂອງການເປັນເຈົ້າຂອງຄວາມວຸ້ນວາຍໄດ້ເຮັດໃຫ້ພວກເຮົາຊ້າລົງ.

The Android Conundrum

ລະຫັດເບິ່ງບໍ່ດີ, ກິດຈະ ກຳ ຄຸ້ມຄອງທຸກຢ່າງ:

  • ກະທູ້
  • I / O
  • ການ ຄຳ ນວນ
  • ຮູບແບບ
  • ຕັ້ງຄ່າການປ່ຽນແປງ
  • ສິ່ງທີ່ບໍ່

ຫຼັງຈາກທີ່ທັງຫມົດ, ກິດຈະກໍາແມ່ນຜູ້ຄວບຄຸມ, ແມ່ນບໍ? ຫຼືພວກເຂົາແມ່ນ Views? ຂ້ອຍບໍ່ຮູ້ອີກຕໍ່ໄປ.

ເອັມວີ

ການອອກແບບ ໃໝ່ ໃນທ້ອງຟ້າ

ພວກເຮົາ ຈຳ ເປັນຕ້ອງອອກແບບແອັບໃນແບບທີ່ການປ່ຽນແປງລະຫັດຂອງບ່ອນໃດບ່ອນ ໜຶ່ງ ບໍ່ໄດ້ ທຳ ລາຍສິ່ງອື່ນ. ແອັບ The ຕ້ອງເປັນຄືກັບລຸງ Bob ເວົ້າວ່າ“ ເຂັ້ມແຂງແຕ່ບໍ່ແຂງກະດ້າງ, ປ່ຽນແປງໄດ້ແຕ່ບໍ່ອ່ອນແອ”.

Robert“ ລຸງ Bob” Martin

ນີ້ແມ່ນເວລາທີ່ຜູ້ໃຫ້ ຄຳ ແນະ ນຳ ແລະເພື່ອນຂອງຂ້ອຍ Kashif Razzaqui ໄດ້ເຂົ້າຮ່ວມທີມເພື່ອຊ່ວຍພວກເຮົາຫລຸດຜ່ອນຄວາມວຸ້ນວາຍ. ການອອກແບບ ໃໝ່ ບໍ່ເຄີຍເກີດຂື້ນ, ແຕ່ພວກເຮົາໄດ້ປັບປຸງນະລົກອອກຈາກລະຫັດຂອງພວກເຮົາ:

  • ພວກເຮົາໄດ້ເພີ່ມ "ບໍລິການ" ຊັ້ນແລະຍ້າຍລະຫັດທີ່ບໍ່ແມ່ນ UI ເຂົ້າໄປໃນພວກມັນ, ການບໍລິການ ໜຶ່ງ ຄັ້ງຕໍ່ຄັ້ງ.
  • ພວກເຮົາໄດ້ຈັບ AsyncTasks ແລະຍ້າຍໄປທີ່ ListenableFutures ໂດຍໃຊ້ Guava.
  • ພວກເຮົາໄດ້ຖິ້ມ AsyncHttpClient ສຳ ລັບ OkHttp.
  • ແຕ່ສິ່ງທີ່ ສຳ ຄັນກວ່ານັ້ນ, ພວກເຮົາເລີ່ມຕົ້ນອ່ານຫຼາຍຢ່າງ: ລະຫັດສະອາດ, ສະຖາປັດຕະຍະ ກຳ ທີ່ສະອາດ, SOLID, DRY, ນັກຂຽນໂປແກຼມ Pragmatic, Java Concurrency ໃນການປະຕິບັດ, ການອອກແບບໂດເມນຂັບເຄື່ອນ, ແລະອື່ນໆ.

ບໍ່ດົນພວກເຮົາກໍ່ເລີ່ມເຫັນປະໂຫຍດຂອງຄວາມພະຍາຍາມຂອງພວກເຮົາ. ຜະລິດຕະພັນເພີ່ມຂື້ນ, ພວກເຮົາ ກຳ ລັງຂຽນສິ່ງຕ່າງໆໃຫ້ໄວຂຶ້ນ, ທຸກຄົນມີຄວາມສຸກ.

ນີ້ແມ່ນຈົນກ່ວາພວກເຮົາ unified ກິດຂອງພວກເຮົາແລະ hell ທັງຫມົດ broke ສູນເສຍ. ພຽງແຕ່ມີຊັ້ນບໍລິການເພີ່ມເຕີມບໍ່ໄດ້ຕັດມັນ.

ສິນລະປະຂອງລະຫັດຄວາມສະອາດ

ຫລັງຈາກໄດ້ເບິ່ງວິດີໂອຂອງລຸງ Bob ກ່ຽວກັບສະຖາປັດຕະຍະ ກຳ ທີ່ສະອາດຫລາຍຄັ້ງແລະອ່ານຫລາຍກ່ຽວກັບສະຖາປັດຕະຍະ ກຳ ຂອງແອັບ app Android, ຂ້ອຍໄດ້ຕັດສິນໃຈທົດລອງໃຊ້ຮູບແບບການອອກແບບ MVP ແລະ RxJava.

ສອງສາມມື້ເຂົ້າໃນການທົດລອງ, ພວກເຮົາໄດ້ຕັດສິນໃຈປ່ຽນໄປທີ່ RxJava ແລະປະຕິບັດ MVP ໂດຍໃຊ້ສະຖາປັດຍະ ກຳ ທີ່ສະອາດ. ພວກເຮົາໄດ້ເຮັດໃຫ້ແນ່ໃຈວ່າພວກເຮົາລວບລວມທຸກຊັ້ນຂໍ້ມູນທີ່ຢູ່ເບື້ອງຫຼັງການໂຕ້ຕອບແລະແຍກຄວາມກັງວົນເປັນຢ່າງດີ.

  • The View, ໂດຍປົກກະຕິແລ້ວປະຕິບັດໂດຍ Fragment, ມີເອກະສານອ້າງອີງເຖິງຜູ້ ນຳ ສະ ເໜີ. ສິ່ງດຽວທີ່ມຸມມອງຈະເຮັດຄືການໂທຫາວິທີການຈາກຜູ້ ນຳ ສະ ເໜີ ທຸກໆຄັ້ງທີ່ມີການປະຕິບັດການໂຕ້ຕອບ.
  • Presenter ມີຄວາມຮັບຜິດຊອບທີ່ຈະເຮັດ ໜ້າ ທີ່ເປັນຄົນກາງລະຫວ່າງ View ແລະ Model. ມັນດຶງເອົາຂໍ້ມູນຈາກ Model ແລະສົ່ງຄືນມັນຖືກຈັດຮູບແບບໃຫ້ເບິ່ງ. ແຕ່ບໍ່ຄືກັບ MVC ປົກກະຕິ, ມັນຍັງຕັດສິນໃຈວ່າມີຫຍັງເກີດຂື້ນເມື່ອທ່ານໂຕ້ຕອບກັບ View.
  • Model ແມ່ນພຽງແຕ່ປະຕູສູ່ຊັ້ນໂດເມນຫລືເຫດຜົນທາງທຸລະກິດເທົ່ານັ້ນ.
  • ຜູ້ໂຕ້ຕອບພົວພັນກັບ I / O ແລະເປັນຜູ້ໃຫ້ຂໍ້ມູນທີ່ຈະສະແດງຢູ່ໃນມຸມມອງ.

ດຽວນີ້ມັນງ່າຍກວ່າທີ່ຈະປ່ຽນ ໜຶ່ງ ຊັ້ນດ້ວຍການຈັດຕັ້ງປະຕິບັດ ໃໝ່ ໝົດ. ການອອກແບບ UI ໃໝ່, ເຊິ່ງເປັນສ່ວນ ໜຶ່ງ ຂອງການພັດທະນາແອັບ app Android, ໄດ້ງ່າຍຂຶ້ນຫຼາຍ. ໃນທີ່ສຸດສິ່ງທີ່ສາມາດເຄື່ອນຍ້າຍໄດ້ໄວໂດຍບໍ່ຕ້ອງແຕກ.

ກົດລະບຽບ Scout Boy

ການຂຽນລະຫັດບໍ່ພຽງພໍ, ລະຫັດຕ້ອງຮັກສາໃຫ້ສະອາດຕາມການເວລາ. ຄວາມເປັນຈິງຂອງຊີວິດແມ່ນວ່າຊອບແວມີແນວໂນ້ມ ສຳ ລັບ entropy. ພວກເຮົາທຸກຄົນໄດ້ເຫັນການເນົ່າເປື່ອຍແລະເສື່ອມສະພາບຕາມເວລາດັ່ງນັ້ນພວກເຮົາໄດ້ຢືມກົດເກນເດັກຊາຍທີ່ລຽບງ່າຍວ່າ:“ ປ່ອຍໃຫ້ສະ ໜາມ ເດັກສະອາດດີກ່ວາທີ່ເຈົ້າພົບເຫັນ.”

ຖ້າພວກເຮົາທຸກຄົນໄດ້ກວດເບິ່ງລະຫັດຂອງພວກເຮົາໃຫ້ສະອາດ ໜ້ອຍ ກວ່າເວລາທີ່ພວກເຮົາກວດເບິ່ງ, ລະຫັດງ່າຍໆບໍ່ສາມາດເນົ່າເປື່ອຍໄດ້. ການ ທຳ ຄວາມສະອາດບໍ່ ຈຳ ເປັນຕ້ອງເປັນເລື່ອງໃຫຍ່. ປ່ຽນຊື່ຕົວແປ ໜຶ່ງ ອັນໃຫ້ດີກວ່າເກົ່າ, ທຳ ລາຍ ໜ້າ ທີ່ ໜຶ່ງ ທີ່ໃຫຍ່ເກີນໄປ, ລົບລ້າງຊ້ ຳ ຊ້ອນນ້ອຍໆ, ທຳ ຄວາມສະອາດ ໜຶ່ງ ອົງປະກອບຖ້າມີ ຄຳ ຖະແຫຼງການ.

ສະຫຼຸບ

ວິທີການຂອງພວກເຮົາໃນການສ້າງແອັບ app ທີ່ສາມາດປັບຂະຫຍາຍໄດ້ອາດຈະບໍ່ຖືກຕ້ອງແລະທ່ານອາດຈະບໍ່ເຫັນດີກັບໂພສນີ້. ຫລັງຈາກນັ້ນ, ບໍ່ແມ່ນນັກສິລະປິນທຸກຄົນເຫັນດີ ນຳ ກ່ຽວກັບສິລະປະການຕໍ່ສູ້ທີ່ດີທີ່ສຸດ, ຫລືເຕັກນິກທີ່ດີທີ່ສຸດພາຍໃນ ໜຶ່ງ;)

ມີຫຼາຍວິທີການທີ່ແຕກຕ່າງກັນໄປສູ່ MVP ແລະມີຫຼາຍວິທີແກ້ໄຂທີ່ ໜ້າ ສົນໃຈເພື່ອປັບຕົວເຂົ້າກັບ Android. ຄວາມຈິງ ໜຶ່ງ ທີ່ພວກເຮົາບໍ່ສາມາດປະຕິເສດໄດ້ແມ່ນວ່າລະຫັດສະອາດ ສຳ ຄັນແລະທ່ານພຽງແຕ່ບໍ່ສາມາດກວາດໄດ້ພາຍໃຕ້ພົມ.

ຂໍ້ຄວາມນີ້ຢືມຫຼາຍຈາກລະຫັດສະອາດຂອງລຸງ Bob ແລະລັກເອົາຫົວຂໍ້ຈາກການສົນທະນາຂອງ Droidcon ຂອງ Kashif ຈາກປີ 2011.

ຖ້າກົດລະບຽບຄວາມສະອາດ ສຳ ຄັນ ສຳ ລັບທ່ານ, ໃຫ້ສົນທະນາກັນ :) Twitter: @_arunsasi LinkedIn: https://www.linkedin.com/in/arunsasidharan

ຖ້າທ່ານມັກໂພສນີ້, ກະລຸນາກົດຫົວໃຈນ້ອຍໆ! ❤