منشور قصير ، قيمته الرئيسية ستكون التعليقات (آمل).
لقد تحولت إلى Go مؤخرًا. لقد لاحظت حتى الآن ثلاث مشاكل:
time.Tickerلا يتوقف: تخطي الخطdefer tick.Stop()يقول التعليق على نوع المكتبة أنها "آمنة في نفس الوقت" ، لكنها لا تذكر بالضبط كيف يمكن استدعاء الأساليب أو من أي goroutines. يمكن اعتبار الإعداد الافتراضي "يمكن استدعاء أي طريقة من أي نوع من أي مكان في أي تسلسل" ، ولكن من الناحية العملية ، ليس هذا هو الحال بالنسبة لمعظم الأنواع الآمنة للخيط: إما أن يكون لديهم دورة حياة (بدء - توقف) ، أو أن الدلالات تدعم كاتب واحد فقط: التحور يمكن استدعاء الطرق من goroutine واحد فقط أو كليهما.
النقطة مرتبطة وتتداخل جزئيًا مع النقطة السابقة: يوجد حقل في الهيكل
sync.Mutex، ولكن لا يوجد تعليق يشرح ما يحميها ، والأهم من ذلك لماذا (على سبيل المثال ، "يجب حماية الوصول إلى هذه الحقول ، لأنها مكتوبة من غوروتين كذا وكذا وقراءتها من goroutinesnet/httpالخادم ").
لاحظ أنه حتى في مصدر golang / go ، والذي لا يتم التعليق عليه عادةً (باستثناء الوثائق الوثائقية) ، تحتوي جميع عناصر المزامنة في الحزم الفرعيةnet/على تعليقات قصيرة.
سؤال للأشخاص الذين كانوا يكتبون في Go long - ما هي المشكلات التي تلاحظها بانتظام ، أثناء المراجعات ، أو الخوض في الشفرة القديمة ، أو رمز المكتبات؟
هذا المنشور عبارة عن ترجمة متقاطعة من منشور على Reddit .