97 Things Every Programmer Should Know
  • 97 Things Every Programmer Should Know
  • LANGS
  • 97 Things Every Programmer Should Know
    • Summary
    • Act with Prudence
    • Apply Functional Programming Principles
    • Ask "What Would the User Do?" (You Are not the User)
    • Automate Your Coding Standard
    • Beauty Is in Simplicity
    • Before You Refactor
    • Beware the Share
    • The Boy Scout Rule
    • Check Your Code First before Looking to Blame Others
    • Choose Your Tools with Care
    • Code in the Language of the Domain
    • Code Is Design
    • Code Layout Matters
    • Code Reviews
    • Coding with Reason
    • A Comment on Comments
    • Comment Only What the Code Cannot Say
    • Continuous Learning
    • Convenience Is not an -ility
    • Deploy Early and Often
    • Distinguish Business Exceptions from Technical
    • Do Lots of Deliberate Practice
    • Domain-Specific Languages
    • Don't Be Afraid to Break Things
    • Don't Be Cute with Your Test Data
    • Don't Ignore that Error!
    • Don't Just Learn the Language, Understand its Culture
    • Don't Nail Your Program into the Upright Position
    • Don't Rely on "Magic Happens Here"
    • Don't Repeat Yourself
    • Don't Touch that Code!
    • Encapsulate Behavior, not Just State
    • Floating-point Numbers Aren't Real
    • Fulfill Your Ambitions with Open Source
    • The Golden Rule of API Design
    • The Guru Myth
    • Hard Work Does not Pay Off
    • How to Use a Bug Tracker
    • Improve Code by Removing It
    • Install Me
    • Inter-Process Communication Affects Application Response Time
    • Keep the Build Clean
    • Know How to Use Command-line Tools
    • Know Well More than Two Programming Languages
    • Know Your IDE
    • Know Your Limits
    • Know Your Next Commit
    • Large Interconnected Data Belongs to a Database
    • Learn Foreign Languages
    • Learn to Estimate
    • Learn to Say "Hello, World"
    • Let Your Project Speak for Itself
    • The Linker Is not a Magical Program
    • The Longevity of Interim Solutions
    • Make Interfaces Easy to Use Correctly and Hard to Use Incorrectly
    • Make the Invisible More Visible
    • Message Passing Leads to Better Scalability in Parallel Systems
    • A Message to the Future
    • Missing Opportunities for Polymorphism
    • News of the Weird: Testers Are Your Friends
    • One Binary
    • Only the Code Tells the Truth
    • Own (and Refactor) the Build
    • Pair Program and Feel the Flow
    • Prefer Domain-Specific Types to Primitive Types
    • Prevent Errors
    • The Professional Programmer
    • Put Everything Under Version Control
    • Put the Mouse Down and Step Away from the Keyboard
    • Read Code
    • Read the Humanities
    • Reinvent the Wheel Often
    • Resist the Temptation of the Singleton Pattern
    • The Road to Performance Is Littered with Dirty Code Bombs
    • Simplicity Comes from Reduction
    • The Single Responsibility Principle
    • Start from Yes
    • Step Back and Automate, Automate, Automate
    • Take Advantage of Code Analysis Tools
    • Test for Required Behavior, not Incidental Behavior
    • Test Precisely and Concretely
    • Test While You Sleep (and over Weekends)
    • Testing Is the Engineering Rigor of Software Development
    • Thinking in States
    • Two Heads Are Often Better than One
    • Two Wrongs Can Make a Right (and Are Difficult to Fix)
    • Ubuntu Coding for Your Friends
    • The Unix Tools Are Your Friends
    • Use the Right Algorithm and Data Structure
    • Verbose Logging Will Disturb Your Sleep
    • WET Dilutes Performance Bottlenecks
    • When Programmers and Testers Collaborate
    • Write Code as If You Had to Support It for the Rest of Your Life
    • Write Small Functions Using Examples
    • Write Tests for People
    • You Gotta Care About the Code
    • Your Customers Do not Mean What They Say
  • 97 چیزی که هر برنامه نویس باید بداند
    • فهرست چیزها!
    • بدهی فنی (Technical Debt)
    • برنامه نویسی تابعی یا Functional Programming
    • نیاز کاربر چیست؟
    • استاندارهای کدنویسی
    • ساده زیباست
    • آشنایی با مفهوم ریفکتورینگ در کدنویسی
    • نظافت را رعایت کنید!
    • پیش از آن که دیگران را متهم کنید، کد خود را چک کنید!
    • انتخاب ابزار مناسب
    • برنامه های خود را به زبان مشتریان بنویسید!
    • طرح‌های خود را بی‌نقص کنید
    • به چیدمان کدها توجه کنید!
    • نقد و بررسی کدها
    • کامنت‌گذاری را فراموش نکنید
    • تنها توضیحاتی را بنویسید که کدهایتان قادر به شرح آنها نباشند!
    • از کدهای قبلی خود در شرایط مناسب مجدداً استفاده کنید
    • همواره در حال یادگیری موضوعات جدید باشید
    • ویژگی‌های یک API با طراحی مناسب
    • از ابتدای کار توسعهٔ اپلیکیشن خود روی فرآیند نصب و دیپلوی آن به طور پیوسته کار کنید
    • مدیریت اکسپشن ها
    • تمرین آگاهانه، لازمهٔ حرفه‌ای شدن است!
    • پشت هر خط از کد شما می‌بایست یک منطق وجود داشته باشد!
    • مفهوم DSL چیست و چرا آشنایی با آن در حوزهٔ برنامه‌نویسی اهمیت دارد؟
    • از ساختارشکنی نترسید!
    • برای تست نرم‌افزار از دیتای واقعی استفاده کنید
    • حتی یک ارور را هم نادیده نگیرید!
    • فرهنگ استفاده از یک زبان برنامه‌نویسی را در کنار سینتکس آن بیاموزید
    • اکسپش‌ها را به راحت‌ترین شکل ممکن هَندل کنید
    • فرایند توسعه یک نرم‌افزار خوب اصلاً شانسی نیست
    • آشنایی با قانون DRY
    • آشنایی با مراحل توسعهٔ نرم‌افزار
    • به‌کارگیری درست از اصول برنامه‌نویسی شیٔ‌گرا
    • اعداد اعشاری با خطای محاسباتی در کامپیوتر ذخیره می‌شوند
    • جاه طلبی خود را با شرکت در پروژه های متن باز برآروده کنید!
    • قانون طلایی طراحی API
    • کسی که چند سال است کدنویسی می‌کند، اصلاً علامهٔ دهر نیست!
    • کار زیاد ضمانت موفقیت در برنامه‌نویسی نیست!
    • چگونه به یک باگ نگاه کنیم؟
    • با حذف کدهای اضافی، سورس‌کد خود را بهبود بخشید
    • برنامه‌هایی که می‌نویسید را کاربرپسند کنید
    • فرایندهای برون برنامه‌ای، زمان پاسخگویی نرم‌افزار را تحت‌الشعاع خود قرار می‌دهند
    • بیلد (Build) اصولی ارائه کنید
    • استفادهٔ بهینه از ابزارهای کامندلاینی
    • یادگیری هم‌زمان بیش از یک زبان برنامه‌نویسی
    • محیط کد نویسی (IDE) خود را مثل موم در دست بگیرید
    • ا محدودیت‌های خود دست و پنجه نرم کنید
    • همواره بدانید چه چیزی را قرار است کامیت کنید
    • آشنایی با نحوهٔ به‌کارگیری دیتابیس‌های رابطه‌ای
    • آشنایی با مهارت‌های ارتباطی و فراگیری زبان‌های خارجی
    • خود را با مهارت تخمین زدن تجهیز کنید!
    • کدام یک؟ IDE یا Editor ، مسأله این است!
    • ارسال پیام خطا به دولوپر توسط نرم‌افزار
    • چیزهای اضافی را لود نکنید!
    • چه‌موقع و چگونه از راه‌کارهای موقتی در کدنویسی استفاده کنیم؟
    • استفادهٔ نادرست از اینترفیس‌ها را غیرممکن سازید
    • تا حد ممکن همه‌ چیز را شفاف‌سازی کنید
    • ضرورت آشنایی با مفاهیم کانکارنسی و پاراللیزم
    • یافتن راه‌کارهای ساده برای مشکلات سخت
    • دولوپری که نداند Polymorphism چیست، دولوپر نیست!
    • تستر‌های نرم‌افزار دشمن دولوپرها نیستند!
    • همواره یک نسخه از نرم‌افزار برای ریلیس داشته باشید
    • فقط سورس‌کد است که حرف اول و آخر را می‌زند
    • فقط کد نزنید بلکه Build Process را نیز مدنظر قرار دهید
    • اهمیت برنامه‌نویسی دونفره
    • آشنایی با تفاوت Static Typing و Dynamic Typing در برنامه‌نویسی
    • تا حد ممکن از نمایش ارورها برای کاربر اجتناب کنید!
    • به چه برنامه‌نویسی حرفه‌ای می‌گویند؟
    • از ورژن کنترل غافل نشوید!
    • ماوس و کیبورد را کنار بگذارید!
    • کدخوانی کنید!
    • تعاملات اجتماعی کلید موفقیت است!
    • تا حد ممکن دست به اختراع مجدد چرخ نزنید!
    • تا حد ممکن از Singleton Pattern استفاده نکنید
    • وابستگی‌های زیاد دشمن ریفکتورینگ هستند!
    • هرچه تعداد خطوط کد کمتر، بهتر!
    • آشنایی با قانون Single Responsibility
    • همه‌ چیز با یک آری شروع می‌شود!
    • تا حد ممکن همه‌ چیز را خودکار کنید
    • شنایی با مزایای ابزارهای تحلیل سورس‌کد
    • در تست نرم‌افزار فقط رفتار مورد انتظار را بسنجید
    • تست‌ها علاوه بر صحیح بودن، می‌بایست دقیق هم باشند
    • تست نرم‌افزار و سورس‌کد را آخر شب‌ها و آخر هفته‌ها انجام دهید!
    • مقایسه‌ای مابین مهندسین نرم‌افزار و دیگر مهندسان
    • از نوشتن کدهای اضافی پرهیز کنید
    • اهمیت برنامه‌نویسی دونفره در کدنویسی را هرگز نادیده نگیرید
    • منفی در مفنی می‌شود مثبت!
    • کدنویسی تمیز و اصولی یک باید است
    • ابزارهای یونیکسی دوست دولوپرها هستند!
    • استفادهٔ درست از الگوریتم‌ها و دیتا استراکچرها
    • با لاگ‌گیری Verbose دچار دردسر خواهید شد!
    • درک تفاوت مفاهیم DRY و WET در کدنویسی بهینه
    • تعامل مابین دولوپرها و تسترها
    • طوری کد بزنید که گویی قرار است تا آخر عمر سورس‌کدتان را ساپورت کنید!
    • تا حد ممکن فانکشن‌های کوچک بنویسید
    • برای دولوپرها تست بنویسید نه برای ماشین‌ها!
    • مراقب سورس‌کد باشید!
    • منظور مشتریان شما چیزی نیست که می گویند!
  • 97 вещей, которые должен знать каждый программист
    • Summary
    • Автоматизируйте стандарт кодирования
    • Будьте предусмотрительны
    • В линкере нет никакой магии
    • Ваш заказчик говорит не то, что думает
    • Взаимодействие между процессами влияет на время отклика
    • Выучить язык - значит понять его культуру
    • Дайте проекту голос
    • Две ошибки могут взаимокомпенсировать друг друга (и найти это - очень тяжело)
    • Делайте невидимое видимым
    • Делайте ревью кода
    • Думаете, это никто не увидит?
    • Единственный исполняемый файл
    • Заботьтесь о коде
    • Золотое правило дизайна API
    • Изучайте гуманитарные науки
    • Изучайте другие языки программирования
    • Изучайте иностранные языки!
    • Изучите ограничения
    • Изучите свой IDE
    • Инкапсулируйте не только состояние, но и поведение
    • Используйте правильные алгоритмы и структуры данных
    • Используйте преимущества анализаторов кода
    • Используйте типы из вашей предметной области
    • Когда программисты и тестеры объединяются
    • Комментируйте лишь то, что не ясно из кода
    • Красота и простота
    • Мины замедленного действия
    • Миф о гуру
    • Много данных? Используйте СУБД!
    • Мыслите состояниями
    • Наблюдайте за пользователями
    • Научитесь пользоваться командной строкой
    • Начинайте с "да"
    • Начните отладку процесса установки как можно раньше
    • Не бойтесь что-нибудь сломать!
    • Не забывайте о "Hello, world"
    • Не игнорируйте ошибки.
    • Не надейтесь на магию
    • Не повторяйтесь
    • Не работайте сверхурочно
    • Не трогай это!
    • Непрерывное обучение
    • Нет ничего более постоянного, чем временное
    • О комментариях
    • О пользе изобретения велосипеда
    • Обмен сообщений вместо разделяемой памяти
    • Одна голова - хорошо, а две - лучше
    • Основы bug tracking-a
    • Осознанная практика
    • Осторожнее с повторным использованием!
    • Осторожно выбирайте внешние модули
    • Отойдите от клавиатуры
    • Перегруженный журнал ошибок может лишить вас сна
    • Перед началом рефакторинга
    • Пишите код так, как будто вы будете сопровождать его до конца жизни
    • Пишите маленькие функции, используя примеры
    • Пишите тесты для людей
    • Планируйте свой следующий коммит
    • Поддерживайте чистоту кода
    • "Подмоченный" код сложнее оптимизировать
    • Подозреваете ошибку в компиляторе? Проверьте получше свой код!
    • Позвольте трупу упасть
    • Помещайте все в систему контроля версий
    • Послание в будущее
    • Правило туриста
    • Предотвращайте ошибки
    • Применяйте принципы функционального программирования
    • Принцип единственности ответственности
    • Программирование - это дизайн
    • Программируйте на языке предметной области
    • Программируйте осознанно
    • Программист - профессионал
    • Простота от уменьшения
    • Разделяйте технические и логические исключения
    • Разметка кода важна!
    • Сделайте процесс сборки своим
    • Сопротивляйтесь использованию Singleton
    • Состояние потока и парное программирование
    • Тестеры - лучшие друзья программистов
    • Тестирование - обязательный этап разработки
    • Тестируйте по ночам и в выходные
    • Тестируйте требуемое поведение, а не случайное
    • Тесты должны быть точными
    • Только код расскажет всю правду
    • Убунту-программирование
    • Удобство?
    • Удовлетворяйте свои амбиции на проектах open source
    • Упущенные возможности полиморфизма
    • Установи меня
    • Учитесь оценивать
    • Хороший интерфейс: легко использовать правильно, сложно использовать неправильно
    • Числа с плавающей точкой - не действительные!
    • Читайте код
    • Чтобы улучшить код, удалите его
    • Шаг назад - и автоматизируйте, автоматизируйте, автоматизируйте!
    • Юникс-утилиты - это ваши друзья
    • Языки предметной области
  • Her Yazılımcının Bilmesi Gereken 97 Şey
    • Summary
    • Sağduyulu hareket edin
    • Fonksiyonel Programlama İlkelerini Uygulayın
    • "Kullanıcı Ne Yapar?" Diye Sor (Kullanıcı Siz değilsiniz)
    • Kodlama Standardınızı Otomatikleştirin
    • Güzellik Sadelikte
    • Yeniden Düzenlemeden Önce
    • Paylaşıma Dikkat Edin
    • İzci Kuralı
    • Başkalarını Suçlamadan Önce Kodunuzu Kontrol Edin
    • Araçlarınızı Özenle Seçin
    • Domain Dilindeki Kod
    • Kod Tasarımdır
    • Kod Düzeni Önemlidir
    • Kod İncelemeleri
    • Akıllı Kodlama
    • Yorumlar Üzerine Bir Yorum
    • Yalnızca Kodun Söyleyemediklerini Yorumlayın
    • Devamlı öğrenme
    • Kolaylık bir yetenek değildir
    • Erken ve Sıkça Dağıtın
    • İş İstisnalarını Tekniklerden Ayırın
    • Bol Bol Kasıtlı Uygulama Yapın
    • Etki Alanına Özgü Diller
    • Bir Şeyleri Kırmaktan Korkma
    • Test Verilerinizle Sevimli Olmayın
    • Hatayı Görmezden Gelmeyin!
    • Sadece Dili Öğrenmeyin, Kültürünü Anlayın
    • Programınızı Dik Konumda Çivilemeyin
    • "Burada Sihir Olur"a Güvenmeyin
    • Kendinizi Tekrar Etmeyin (Don't Repeat Yourself - DRY)
    • O Koda Dokunma!
    • Sadece Durumu Değil, Davranışı Kapsülleyin
    • Kayan Noktalı Sayılar Gerçek Değil
    • Açık Kaynak ile Hedeflerinizi Gerçekleştirin
    • API Tasarımının Altın Kuralı
    • Guru Efsanesi
    • Sıkı Çalışmanın Getirisi Yok
    • Hata İzleyici Nasıl Kullanılır
    • Kodu Kaldırarak İyileştirin
    • Beni Kur
    • Süreçler Arası İletişim Uygulama Yanıt Süresini Etkiler
    • Yapıyı Temiz Tutun
    • Komut Satırı Araçlarını Nasıl Kullanacağınızı Bilin
    • İkiden Fazla Programlama Dilini İyi Bilin
    • IDE'nizi Bilin
    • Sınırlarınızı Bilin
    • Bir Sonraki İşleminizi(Commit) Bilin
    • Büyük Birbirine Bağlı Veriler Bir Veritabanına Aittir
    • Yabancı Diller Öğrenin
    • Tahmin Etmeyi Öğrenin
    • "Merhaba Dünya" Demeyi Öğrenin
    • Bırakın Projeniz Kendi Adına Konuşsun
    • Bağlayıcı Sihirli Bir Program Değildir
    • Geçici Çözümlerin Uzun Ömrü
    • Arayüzlerin Doğru Kullanımını Kolay ve Yanlış Kullanımını Zorlaştırın
    • Görünmezi Daha Görünür Hale Getirin
    • Mesaj Geçişi, Paralel Sistemlerde Daha İyi Ölçeklenebilirlik Sağlar
    • Geleceğe Mesaj
    • Polimorfizm için Kaçırılan Fırsatlar
    • Tuhaf Haber: Testçiler Arkadaşlarınızdır
    • Tek İkili
    • Sadece Kod Gerçeği Söyler
    • Yapıya Sahip Olun (ve Yeniden Düzenleyin)
    • Programı Eşleştirin ve Akışı Hissedin
    • Domain Alanına Özgü Türleri İlkel Türlere Tercih Edin
    • Hataları Önle
    • Profesyonel Yazılımcı
    • Her Şeyi Sürüm Kontrolü Altına Alın
    • Fareyi Yere Bırakın ve Klavyeden Uzaklaşın
    • Kodu Okuyun
    • Beşeri Bilimleri Okuyun
    • Tekerleği Sıklıkla Yeniden İcat Edin
    • Singleton Modelin Cazibesine Kapılma
    • Performansa Giden Yol Kirli Kod Bombalarıyla Dolu
    • Sadelik Azaltmadan Gelir
    • Tek Sorumluluk İlkesi(The Single Responsibility)
    • Evet'ten Başlayın
    • Geri Adım Atın ve Otomatikleştirin, Otomatikleştirin, Otomatikleştirin
    • Kod Analiz Araçlarından Yararlanın
    • Tesadüfi Davranış Değil, Gerekli Davranış Testi
    • Kesin ve Somut Test Edin
    • Uyurken (ve Hafta Sonları) Test Edin
    • Test, Yazılım Geliştirmenin Mühendislik Zorluğudur
    • Durumlarda Düşünmek
    • İki Kafa Çoğu Zaman Bir Kafadan Daha İyidir
    • İki Yanlış Bir Doğru Yapabilir (ve Düzeltilmesi Zordur)
    • Arkadaşlarınız İçin Ubuntu Kodlama
    • Unix Araçları Arkadaşlarınızdır
    • Doğru Algoritmayı ve Veri Yapısını Kullanın
    • Ayrıntılı Log Kaydı Uykunuzu Bozacak
    • WET Performans Darboğazlarını Azaltıyor
    • Programcılar ve Test Uzmanları İşbirliği Yaptığında
    • Hayatınız Boyunca Desteklemek Zorundaymışsınız Gibi Kod Yazın
    • Örnekleri Kullanarak Küçük Fonksiyonlar Yazın
    • İnsanlar için Testler Yaz
    • Kodu Önemsemelisiniz
    • Müşterileriniz Ne Dediklerini Kastetmez
Powered by GitBook
On this page
  1. 97 چیزی که هر برنامه نویس باید بداند

ویژگی‌های یک API با طراحی مناسب

امروزه بعید به نظر می رسد که کسی در دنیای برنامه نویسی دستی بر آتش داشته باشد اما اصطلاح API به گوش او نخورده باشد! اگر شما به عنوان یک برنامه نویس با ای پی آی ها کار کرده باشید از اهمیت آن ها مطلع هستید، با این حال سایر افراد ممکن است بپرسند که «اصلاً ای پی آی ها چه هستند و چرا تا این حد مورد توجه قرار می گیرند؟» در این آموزش به دنبال پاسخ دادن به این پرسش ها هستیم و می خواهیم ببینیم یک API خوش ساخت از چه ویژگی هایی برخوردار است.

اگر بخواهیم تعریف ساده ای از API که مخفف عبارت Application Programming Interface ی «واسط برنامه نویسی اپلیکیشن»است داشته باشیم باید بگوییم که ای پی آی ها مجموعه مقرراتی هستند که مشخص می کنند چه طور یک اپلیکیشن می تواند با اپلیکیشن دیگری ارتباط برقرار کند. زمانی که از یک پی سی یا لپ تاپ استفاده می کنیم، ای پی آی ها همان چیزهایی هستند که انتقال اطلاعات را بین برنامه ها امکان پذیر می کنند، برای مثال ای پی آی های سیستمی، اجرای برنامه ای مانند آفیس ورد را روی سیستم عامل ویندوز امکان پذیر می سازند.

همان طور که از نام API مشخص است، آن ها مانند یک رابط بین برنامه نویسان و یک اپلیکیشن هستند؛ به این صورت که اگر برنامه نویس برای پیش برد برنامه ی خود نیاز به اطلاعاتی از اپلیکیشن دیگری داشت، این واسط ها به او می گویند که می تواند برای دریافت چه اطلاعاتی درخواست دهد، چگونه درخواست خود را مطرح کند، و چگونه اطلاعات خود را دریافت کنند. در واقع API هر اپلیکیشن درخواست های مجاز را از سایر برنامه ها تحویل می گیرد، به اپلیکیشن مورد نظر می فرستد، آن گاه اطلاعات را دریافت می کند و تحویل برنامه های دیگر می دهد. دروافع API ها در فضای وب هم برای سرویس هایی مانند گوگل مپ یا فیسبوک این امکان را فراهم می کنند تا این برنامه ها به اپلیکیشن های دیگر اجازه دهند که آن ها را اجرا کنند. برای مثال یک اپلیکیشن Yelp با استفاده از ای پی آی ها می تواند نزدیک ترین رستوران در اطراف کاربر را روی نقشه های گوگل مپ نشان دهد. یا یک اپ بازی می تواند با سرویس ابری دراپ باکس ارتباط برقرار کند تا تاریخچه ای از نتایج بازی های کاربر روی حافظه ی ابری این سرویس ذخیره شود، بدون آن که توسعه دهنده مجبور باشد یک ذخیره ساز ابری مخصوص اپلیکیشن خود طراحی کند.

اکنون باید ببینیم که ای پی آی ها چگونه این ارتباطات را امکان پذیر می کنند. در حقیقت ای پی آی ها با استفاده از روشی محدود شده و در چارچوب قوانینی خاص با "افشای" برخی از توابع داخلی یک برنامه به محیط خارج از آن تمام این کارها را انجام می دهند. با این کار بدون آن که نیاز باشد توسعه دهنده ها تمام سورس کدهای برنامه ی خود را در اختیار دیگران قرار دهند، اپلیکیشن ها می توانند با به اشتراک گذاری بخشی از داده ها با هم ارتباط برقرار کرده و تعامل داشته باشند.

درواقع API ها با محدود کردن دسترسی برنامه های خارجی به بخش خاصی از قابلیت های یک برنامه -که اغلب هم این سطح از دسترسی کافی است- تمام اطلاعات مورد نیاز سایر اپلیکیشن ها برای ارتباط با نرم افزار مورد نظر را فراهم می کنند. در حقیقت می توان API ها را هم چون پنجره ای به داخل یک برنامه تصور کرد.

با توجه به تمام مثال هایی که از کاربرد API های مختلف بیان کردیم، به نظر می رسد که متوجه اهمیت آن ها در حوزه ی توسعه ی نرم افزار شده باشیم. همان طور که اعضای یک جامعه برای زندگی در کنار هم به یکدیگر نیاز دارند و باید با هم در تعامل باشند، هر چند که در بسیاری از موارد نیازی نیست یک شناخت عمیق از هم داشته باشند -مثلاً برای خرید سبزی، شما لازم نیست که در مورد زندگی خصوصی سبزی فروش محلتان اطلاعات داشته باشید، کافی است که بدانید چه کسی سبزی فروش است و مغازه ی او کجا است- این روزها اپلیکیشن های مختلف نیز به شدت نیاز به تعامل با هم دارند و برای این کار لازم است اطلاعاتی را در مورد هم داشته باشند. ای پی آی ها که تأمین کننده ی این اطلاعات هستند، علاوه بر حفظ امنیت اپلیکیشن ها، با فراهم کردن اطلاعات لازم و حذف داده های غیر ضروری، دقت و سرعت توسعه ی نرم افزارها را بالا می برند. حال باید ببینیم خصوصیات یک API خوب کدامند؟ می توان گفت که یک ای پی آی خوب، ای پی آی یی است که:

  • یادگیری آن آسان باشد؛

  • کاربرد آن حتی بدون استفاده از اسناد، باز هم آسان باشد؛

  • امکان استفاده ی نادرست از آن کم باشد؛

  • خوانایی و امکان نگهداری و پشتیبانی از کدهایی که از آن استفاده می کنند بالا باشد؛

  • برای رفع نیازهای ارتباطی نرم افزارهای دیگر با آن به اندازه ی کافی قدرتمند باشد؛

  • توسعه و گسترش آن ساده باشد؛

برای این که چنین خصوصیاتی را در یک ای پی آی ایجاد کنیم لازم است در زمان طراحی آن قواعدی را رعایت کنیم. از جمله این قواعد می توان به موارد زیر اشاره کرد:

1- هر API یک وظیفه دارد و باید آن را به بهترین نحو ممکن انجام دهد. کارکرد یک API باید به گونه ای باشد که بتوان آن را به ساده ترین صورت ممکن بیان کرد. به طور مثال می گوییم وظیفه ی یک ای پی آی این است که امکان استفاده از شبکه ی اجتماعی یوتیوب را در داخل اپلیکیشن ها فراهم می کند. اگر نتوانید وظیفه ی یک API را به راحتی شرح دهید به این معنا است که مشکلی وجود دارد، و برای رفع آن می توانید طراحی ای پی آی را در قالب ماژول های کوچک تر پیاده سازی کنید، که هر کدام وظیفه ی خاصی داشته باشند.

2- باید API تا حد ممکن کوچک باشند؛ هر چه اطلاعات کمتری افشا شود بهتر است. با این حال باید دقت داشته باشیم که ای پی آی طراحی شده حاوی تمام اطلاعات ضروری باشد. تنها به خاطر داشته باشید که همیشه امکان اضافه کردن اطلاعات وجود دارد، اما حذف اطلاعات افشا شده غیر ممکن است!

3- این API ها نباید از پیاده سازی های مختلف تأثیر بگیرند. به عبارت دیگر، روش استفاده ی واحدی از آن API وجود داشته باشد.

4- دسترسی ها به هر چیز را در پایین ترین سطح ممکن قرار دهید. کلاس ها و آبجکت ها را تا جای ممکن private کنید. کلاس های public نباید فیلدهای public داشته باشند (به استثنای ثابت ها).

5- در زمان طراحی و ساخت API سعی کنید که از کاربران نهایی خود فیدبک بگیرید تا مطمئن شوید محصول نهایی شما تمام نیازهای معقول آن ها را برآورده می کند. به علاوه، باید بدانید که طراحی ای پی آی ها نیاز به یک کار تیمی دارد و به شدت پیشنهاد می شود که تمام اعضای تیم طراحی نرم افزار روی طراحی ای پی آی هم کار کنند.

6- در طراحی API از تکرارهای بیش از حد اجتناب کنید. برای مثال اگر دو متد یک کار را انجام می دهند، نباید از هر دوی آن ها استفاده کنیم. این کار باعث سردرگمی کاربران می شود.

7- از پروتکل امن SSL استفاده کنید. بیش تر کاربران از نقاط دسترسی غیر رمز گذاری شده برای دسترسی به اینترنت استفاده می کنند که امکان هک شدن آن ها را به راحتی فراهم می کند.

نکته SSL مخفف واژگان Secure Sockets Layer به معنی «لایه ی سوکت های ایمن» یکی از پروتوکل های رمزنگاری استاندارد است که به منظور تأمین امنیت ارتباطات اینترنتی توسط شرکت Netscape به منظور انتقال داده‌های خصوصی از طریق اینترنت توسعه داده شد. این پروتوکل امنیت انتقال داده‌ها را در اینترنت برای مقاصدی همچون درگاه های بانک، تصدیق اطلاعات کاربری، انتقال اطلاعات هویتی و دیگر داده‌های حساس امکان پذیر می سازد. به طور خلاصه، کارکرد پروتوکل اس اس ال به این شکل است که مابین کاربر و سایت -که به طور معمول نماینده ی کاربر مرورگری است همچون فایرفاکس یا گوگل کروم و نماینده ی سایت هم وب سرور است- یک لینک رمزنگاری شده ایجاد می‌گردد. در شرایط عادی، اطلاعاتی از این دست به صورت Plain Text یا «متن ساده» مابین مرورگرها و وب سرورها رد و بدل می‌شوند که بسیار آسیب‌پذیر است اما در اس اس ال، کلیه ی داده های رمزنگاری می شوند و به طور کلی، یو آر ال هایی که نیاز به ارتباط اس اس ال دارند، به جای http، با https شروع می شوند.

-از نوشتن مستندات غفلت نکنید. این موضوعی است که بسیاری از برنامه نویسان آن را نادیده می گیرند یا به درستی انجام نمی دهند. مستندات خود را به صورت دقیق و ساده تهیه کنید. بهترین تاکتیک برای این کار این است که فکر کنید می خواهید موضوع را برای یک کودک 10 ساله شرح دهید. از نوشتن در مورد هیچ مرحله ای اجتناب نکنید و هرگز این پیش فرض را نداشته باشید که چون موضوعی برای شما بدیهی است دیگران هم باید آن را بدانند. مستندسازی مناسب به ویژه در شرایطی که فرآیندها پیچیده اند کمک بزرگی به کاربران خواهد کرد.

-واقع گرا باشید. به هر حال با وجود رعایت تمامی قواعد و مشورت اعضای تیم با یکدیگر باز هم امکان اشتباه و نادیده گرفتن یک سری مسائل وجود دارد. اما آن چه باید بدانید این است که در نهایت شما نمی توانید رضایت همه ی افراد را به دست آورید.

در انتها باید این نکته را به شما یادآوری کنیم که هر چند API ها ابزارهایی سودمند در دست برنامه نویسان هستند اما استفاده از آن ها با چالش هایی همراه است. باید بدانید که اگر یک API امروز در دسترس کاربران قرار دارد دلیلی ندارد که این دسترسی برای همیشه وجود داشته باشد. برای مثال چند سال پیش شرکت توئیتر دسترسی کاربران را به ای پی آی های خود محدود کرد.

علاوه بر این، کمپانی هایی که API های خود را در دسترس کاربران قرار می دهند ممکن است بعد از مدتی به ارائه ی خدمات خود پایان دهند. در این صورت اگر اپلیکیشن شما وابسته به API های این شرکت ها باشند با مشکل مواجه خواهند شد. برای مثال فرض کنید شرکت گوگل تصمیم بگیرد ارائه ی خدمات سرویس گوگل مپ را متوقف کند، در این صورت کار اپلیکیشن Yelp نیز متوقف خواهد شد. به هر حال با وجود تمام چالش هایی از این دست، توسعه دهندگان علاقه ی زیادی به استفاده از API ها دارند و هر روز شاهد گسترش ای پی آی های مختلف هستیم.

Previousهمواره در حال یادگیری موضوعات جدید باشیدNextاز ابتدای کار توسعهٔ اپلیکیشن خود روی فرآیند نصب و دیپلوی آن به طور پیوسته کار کنید

Last updated 1 year ago