معماری Swiftخیلی خوبه که در شروع کار، یه دیدگاه کلی درمورد ساختار زبان Swift و اینکه یه برنامهی iOS نوشتهشده با سویفت چطور بنظر میرسه داشته باشین. این جلسه به معماری کلی و ساختار طبیعی زبان Swift اختصاص داره و در جلسات آینده، جزئیات بیشتری رو مطرح میکنیم.
زیربنا
یه دستور کامل در سویفت، یک «عبارت» نامیده میشه. یه فایل Swift شامل چندین «خط» متن هست. شکستن خطوط برای سویفت معنا داره. ساختار عمومی و رایج در یه برنامه، بصورت «یک دستور در هر خط» تعریف شده:
print("hello")
print("world")
نقل قول:دستور print باعث چاپ خروجی توی پنجرهی Console در برنامهی Xcode میشه.
میتونین بیش از یک عبارت رو توی یه خط ترکیب کنین، ولی لازمه که بینشون یه سمیکالن ; بگذارین:
print("hello"); print("world")
شما این اختیار رو دارین که در انتهای آخرین دستور یا دستوری که بهتنهایی توی یک خط اومده، سمیکالن بگذارین یا نه، ولی هیچکس اینکار رو نمیکنه (بجز اونایی که بخاطر اجبار در C یا Objective-C بهش عادت کردن) :
print("hello");
print("world");
درمقابل، یه عبارت میتونه برای خوانایی بیشتر و جلوگیری از تبدیلشدن دستورات به خطوط طولانی، به چند سطر شکسته بشه. البته لازمه که اینکار رو در مکانهای بامعنایی انجام بدین تا Swift رو گیج نکنین. برای مثال، بعد از پرانتز باز میتونه یه مکان خوب برای شکستن سطر باشه:
print(
"world")
توضیحات در برنامه، شامل هر چیزی میشن که بعد از دو اسلش توی یه خط بیان (مثل توضیحات
C++) :
print("world") // this is a comment, so Swift ignores it
همچنین میتونین مثل زبان C، توضیحات رو بین
/* ... */ قرار بدین و اینطوری، بخشی از یک خط یا چند خط رو تبدیل به توضیح کنید. برخلاف زبان C، توضیحات اینشکلی رو میتونین بصورت تودرتو هم تعریف کنین.
توضیحات در برنامه، دو کاربرد خیلی مهم دارن:
- ارائهی توضیحاتی درمورد کدی که دارین مینویسین (برای مراجعات بعدی و ویرایش و...)
- غیرفعالکردن بخشی از کد که از اجراش مطمئن هستین، برای اجرا و کامپایل سریعتر سایر بخشهای برنامه (بدون نیاز به پاککردنش)
بسیاری از ساختارها در سویفت از آکولادها برای تعریف شروع و پایانشون استفاده میکنن. برای مثال:
class Dog {
func bark() {
print("woof")
}
}
بعنوان یه قرارداد نوشتهنشده، بعد از آکولادها همیشه خطوط برنامه شکسته میشن و ادامهی برنامه از خط بعد نوشته میشه که هدف از این کار، افزایش خوانایی هست (درست مثل کد بالا). Xcode خودش هم از این قرارداد پیروی میکنه، ولی واقعیت اینه که Swift اهمیتی به این موضوع نمیده و ساختارهایی مثل این کد هم مجاز هستن (و حتی در برخی مواقع راحتترن) :
class Dog { func bark() { print("woof") }}
Swift یه زبان کامپایلشده است. معنای این حرف اینه که کد شما باید تولید بشه (build). یعنی باید از فیلتر یک کامپایلر بگذره تا از یه فایل متنی به یه شکل سطحپایینتر که کامپیوتر اون رو درک میکنه تبدیل بشه. بعد از این کار هست که برنامهی شما میتونه اجرا بشه و واقعاً کارهایی که بهش گفتین رو انجام بده.
کامپایلر سویفت خیلی در زمان نوشتن برنامه سختگیره و در اغلب مواقع میبینین که با وجود تلاش برای تولید و اجرای برنامه، عملیات build شکست میخوره و کامپایلر به شما یه «خطا» نشون میده که باید اون رو درست کنین تا برنامهتون بتونه اجرا بشه.
البته در موارد زیادی هم کامپایلر به شما اجازه میده برنامه رو با وجود اینکه یکسری «هشدار» درمورد کدتون وجود داره، تولید و اجرا کنین ولی همیشه عادت کنین که هشدارها رو جدی بگیرین و هرچیزی که به شما درموردشون گفته میشه رو اصلاح کنین.
سختگیری کامپایلر، یکیاز مهمترین نقاط قوت سویفت محسوب میشه و باعث میشه کد شما با سطح بالایی از صحت و بازبینی کیفی تولید بشه (حتی قبل از اینکه شروع به اجراکردنش کنین).
نقل قول:خطاها و هشدارهای کامپایلر Swift میتونن واضح و آشکار یا مبهم و کلی باشن (که شما رو به سرنخی درمورد خطا هدایت نمیکنن). اغلب اوقات متوجه میشین که یه چیزی اشتباهه توی یه خط از برنامه، ولی کامپایلر سویفت بهوضوح نمیگه که چی اشتباهه یا حتی کجا توی اون خط، اشتباه وجود داره تا توجهتون بهش جلب بشه. پیشنهاد من اینه که در چنین شرایطی، اون خط رو به چند خط کوچکتر با کدهای سادهتر بشکنین تا به نقطهای برسین که بتونین حدس بزنین مشکل کجاست. سعی کنین عاشق کامپایلر باشین، حتی اگه پیامهای خطایی که به شما میده کمک زیادی بهتون نمیکنه. فراموش نکنید که کامپایلر بهرحال بیشتر از شما میدونه، هرچند گاهیاوقات ممکنه دانشش رو به رخ شما نکشه.
برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید
برچسب : نویسنده : خنجی prog بازدید : 224 تاريخ : شنبه 26 فروردين 1396 ساعت: 18:26