অন্যান্য দরকারী তবে আরও বিশদ-কেন্দ্রিক উত্তরগুলিতে যুক্ত করতে কিছু বড় চিত্রের দৃষ্টিভঙ্গি:
সুইফটে, বিস্মৃত বিবরণটি বিভিন্ন প্রসঙ্গে প্রদর্শিত হবে:
- জোর করে আনরোপিং:
let name = nameLabel!.text
- সুস্পষ্টভাবে মোড়কযুক্ত বিকল্পগুলি:
var logo: UIImageView!
- জোর করে ingালাই:
logo.image = thing as! UIImage
- অপরিশোধিত ব্যতিক্রমগুলি:
try! NSJSONSerialization.JSONObjectWithData(data, [])
এগুলির প্রত্যেকেরই আলাদা ভাষা বোঝার সাথে আলাদা অর্থ রয়েছে তবে তাদের তিনটির মধ্যে তিনটি গুরুত্বপূর্ণ বিষয় রয়েছে:
1. বিস্মৃত বিবরণগুলি সুইফটের সংকলন-সময় সুরক্ষা চেকগুলি বাতিল করে circum
আপনি যখন !
সুইফটে ব্যবহার করেন, আপনি মূলত বলে যাচ্ছেন, "আরে, সংকলক, আমি জানি আপনি কি মনে করেন যে এখানে কোনও ত্রুটি ঘটতে পারে তবে আমি নিশ্চিতভাবে জানি যে এটি কখনই ঘটবে না।"
সমস্ত বৈধ কোড সুইফটের সংকলন-টাইপ টাইপ সিস্টেমের বাক্সে ফিট করে না - বা কোনও ভাষার স্ট্যাটিক ধরণের চেকিংয়ের জন্য matter এমন পরিস্থিতি রয়েছে যেখানে আপনি যুক্তিযুক্তভাবে প্রমাণ করতে পারেন যে কোনও ত্রুটি কখনই ঘটবে না, তবে আপনি এটি সংকলকটিতে প্রমাণ করতে পারবেন না । এই কারণেই সুইফটের ডিজাইনাররা এই বৈশিষ্ট্যগুলি প্রথম স্থানে যুক্ত করেছিলেন।
যাইহোক, আপনি যখনই ব্যবহার করবেন !
, আপনি কোনও ত্রুটির জন্য পুনরুদ্ধার পথ পাচ্ছেন না, যার অর্থ ...
২. বিস্মৃত বিবরণগুলি হ'ল সম্ভাব্য ক্রাশ।
একটি বিস্ময় বিন্দুতে আরও বলা হয়েছে, "আরে সুইফ্ট, আমি এতটাই নিশ্চিত যে এই ত্রুটিটি কখনই ঘটতে পারে না যে এটির জন্য পুনরুদ্ধারের পথটি কোড করা আমার চেয়ে আমার পুরো অ্যাপটি ক্র্যাশ করা আপনার পক্ষে ভাল ” "
এটি একটি বিপজ্জনক দাবি এটা তোলে করতে মিশন-ক্রিটিকাল কোড যেখানে আপনি আপনার কোডের invariants সম্পর্কে হার্ড চিন্তা আছে, এটা হতে পারে যে বাজে আউটপুট একটি ক্র্যাশ চেয়ে খারাপ হল: সঠিক এক হতে।
যাইহোক, আমি যখন !
বন্য দেখতে পাই , এটি খুব কমই এত মনযোগ দিয়ে ব্যবহার করা হয়। পরিবর্তে, এটির প্রায়শই অর্থ হয়, "এই মানটি wasচ্ছিক ছিল এবং আমি কেন এটি নিলাম হতে পারে বা কীভাবে সঠিকভাবে সেই পরিস্থিতিটি পরিচালনা করতে পারি সে সম্পর্কে খুব কঠিন চিন্তা করিনি , তবে যুক্ত !
করে এটি সংকলন করে দিয়েছে ... তাই আমার কোডটি সঠিক, তাই না?"
বিস্ময়কর বিন্দুর অহংকার থেকে সাবধান থাকুন। পরিবর্তে…
৩. বিস্ময়বোধক পয়েন্টগুলি খুব কম ব্যবহার করা হয়।
এই !
কনস্ট্রাক্টের প্রত্যেকটিরই একটি অংশ রয়েছে ?
যা আপনাকে ত্রুটি / শূন্য মামলা মোকাবেলা করতে বাধ্য করে:
- শর্তসাপেক্ষ আনরেপিং:
if let name = nameLabel?.text { ... }
- Optionals:
var logo: UIImageView?
- শর্তসাপেক্ষ জাল:
logo.image = thing as? UIImage
- শূন্য-ব্যর্থতা ব্যতিক্রম:
try? NSJSONSerialization.JSONObjectWithData(data, [])
আপনি যদি ব্যবহার করতে প্ররোচিত হন তবে আপনি পরিবর্তে !
কেন ব্যবহার করছেন না তা সাবধানতার সাথে বিবেচনা করা ভাল ?
। !
অপারেশন ব্যর্থ হলে আপনার প্রোগ্রামটি ক্রাশ করা কি সর্বোত্তম বিকল্প ? কেন সেই মানটি alচ্ছিক / উপলভ্য?
আপনার কোড শূন্য / ত্রুটির ক্ষেত্রে গ্রহণযোগ্য কোনও পুনরুদ্ধার পথ আছে কি? যদি তাই হয় তবে কোড দিন
যদি এটি শূন্য নাও হতে পারে, ত্রুটিটি কখনই না ঘটতে পারে, তবে আপনার যুক্তিটি পুনরায় কাজ করার কোনও যুক্তিযুক্ত উপায় আছে যাতে সংকলক তা জানে? যদি তা হয় তবে তা করুন; আপনার কোড কম ত্রুটি-প্রবণ হবে।
এমন সময় আছে যখন কোনও ত্রুটি পরিচালনা করার কোনও যুক্তিসঙ্গত উপায় নেই, এবং কেবল ত্রুটিটিকে উপেক্ষা করে - এবং এভাবে ভুল ডেটা নিয়ে এগিয়ে যাওয়া - ক্রাশ হওয়ার চেয়ে খারাপ হতে পারে । সেই সময়ের বল unwrapping ব্যবহার করতে হয়।
আমি পর্যায়ক্রমে এর পুরো !
ব্যবহারের জন্য আমার সম্পূর্ণ কোডবেস অনুসন্ধান এবং এটির নিরীক্ষণ করি। খুব কম ব্যবহারের জন্য যাচাই বাছাই করা যায়। (এই লেখা হিসাবে, পুরো সিয়স্তার কাঠামোর ঠিক দুটি উদাহরণ রয়েছে))
বলতে হচ্ছে না আপনার উচিত না ব্যবহার !
আপনার কোডে - শুধু আপনি এটি ব্যবহার করা উচিত সমনোযোগে , এবং এটি ডিফল্ট বিকল্প কখনোই ভুলবেন না।