سؤال

DataflowAnomalyAnalysis:وجدت 'DD'-الشذوذ متغير متغير' (خطوط n1'-'n2').

DataflowAnomalyAnalysis:وجدت 'دو'-الشذوذ متغير متغير' (خطوط n1'-'n2').

دد دو الصوت مألوف...أريد أن أقول في أشياء مثل اختبار تحليل المتعلقة أضعف ما قبل وما بعد الظروف ، ولكن لم تذكر تفاصيل.

NullAssignment:تعيين كائن إلى باطل هو رمز رائحة.النظر في إعادة بيع ديون.

لن الإعداد كائن إلى null مساعدة في جمع القمامة ، إذا كان الكائن هو كائن محلي (لا تستخدم خارج الأسلوب)?أم مجرد خرافة ؟

MethodArgumentCouldBeFinal:المعلمة 'المعلمة' لم يتم تعيين و يمكن أعلن النهائي

LocalVariableCouldBeFinal:المحلية متغير متغير' يمكن إعلان النهائي

هل هناك أي مزايا استخدام final معلمات المتغيرات ؟

LooseCoupling:تجنب استخدام تنفيذ أنواع مثل 'LinkedList';استخدام واجهة بدلا من ذلك

لو كنت أعرف أن أنا على وجه التحديد بحاجة إلى LinkedList, فلماذا لا تستخدم واحدة لجعل نواياي صراحة واضحة إلى المستقبل المطورين ؟ انه شيء واحد للعودة إلى فئة أعلى حتى الصف مسار منطقي ولكن لماذا لا تعلن بلدي المتغيرات أن تكون من أدق معنى ؟

AvoidSynchronizedAtMethodLevel:استخدام مستوى كتلة بدلا من الأسلوب المستوى تزامن

ما هي مزايا على مستوى الكتلة تزامن يكون على مستوى طريقة التزامن ؟

AvoidUsingShortType:لا تستخدم قصيرة نوع

أول لغات C و C++ ، ولكن في جافا العالم, لماذا لا يجب استخدام نوع التي تصف البيانات الخاصة بي ؟

هل كانت مفيدة؟

المحلول

  • دد دو الشذوذ (إذا كنت أتذكر بشكل صحيح—استخدام FindBugs و رسائل مختلفة قليلا) الرجوع إلى تعيين قيمة متغير محلي الذي لم يقرأ عادة لأنه تكليف قيمة أخرى قبل أن تقرأ.حالة نموذجية سيتم تهيئة متغير مع بعض null عندما أعلن. لا تقوم بتعريف المتغير حتى الحاجة إليها.

  • تعيين null إلى متغير محلي من أجل "مساعدة" جامع القمامة هو أسطورة.PMD هو السماح تعلمون هذا هو مجرد نتائج عكسية فوضى.

  • تحديد النهائية على متغير محلي يجب أن يكون من المفيد جدا أن محسن, ولكن ليس لدي أي أمثلة ملموسة الحالي JITs الاستفادة من هذا التلميح.لقد وجدت أنه من المفيد في التفكير حول صحة التعليمات البرمجية الخاصة بي.

  • تحديد واجهات حيث... حسنا ، واجهات تصميم رائع الممارسة.يمكنك بسهولة تغيير تطبيقات جمع دون التأثير المتصل على الإطلاق.هذا ما واجهات كل شيء.

  • لا أستطيع التفكير في العديد من الحالات التي يكون فيها المتصل تتطلب a LinkedList, لأنه لا يعرض أي API التي لم تعلن من قبل بعض واجهة.إذا كان العميل يعتمد على API, انها متوفرة من خلال الواجهة الصحيح.

  • كتلة مستوى التزامن يسمح مقطع حرج أن تكون أصغر حجما ، مما يسمح الكثير من العمل الذي يتعين القيام به بشكل متزامن ممكن.ربما الأهم من ذلك, يسمح استخدام قفل كائن القطاع الخاص التي تسيطر عليها أرفق الكائن.بهذه الطريقة, يمكنك ضمان أن لا الجمود يمكن أن تحدث.باستخدام المثال نفسها قفل أي شخص يمكن مزامنة على أنه غير صحيح ، مما تسبب في توقف تام.

  • المعاملات من نوع short يتم ترقيته إلى int في أي عمليات.هذه القاعدة مما يتيح لك معرفة أن هذا العرض هو الحدوث, و كذلك قد تستخدم int.ومع ذلك, باستخدام short نوع يمكن حفظ الذاكرة ، حتى إذا كان مثيل الأعضاء, ربما تجاهل هذه القاعدة.

نصائح أخرى

DataflowAnomalyAnalysis:وجدت 'DD'-الشذوذ متغير متغير' (خطوط n1'-'n2').

DataflowAnomalyAnalysis:وجدت 'دو'-الشذوذ متغير متغير' (خطوط n1'-'n2').

أي فكرة.

NullAssignment:تعيين كائن إلى باطل هو رمز رائحة.النظر في إعادة بيع ديون.

لن الإعداد كائن إلى null مساعدة في جمع القمامة ، إذا كان الكائن هو كائن محلي (لا تستخدم خارج الأسلوب)?أم مجرد خرافة ؟

الكائنات في طرق محلية ملحوظ إلى أن القمامة التي تم جمعها مرة واحدة إرجاع الأسلوب.تعيين إلى null لن تفعل أي فرق.

لأنه من شأنه أن يجعل أقل خبرة المطورين ما هو هذا باطل التنازل عن كل هذا قد يعتبر رمز رائحة.

MethodArgumentCouldBeFinal:المعلمة 'المعلمة' لم يتم تعيين و يمكن أعلن النهائي

LocalVariableCouldBeFinal:المحلية متغير متغير' يمكن إعلان النهائي

هل هناك أي مزايا استخدام final معلمات المتغيرات ؟

تجعل أوضح أن القيمة لن تتغير خلال دورة حياة الكائن.

أيضا ، إذا قبل أي فرصة شخص ما في محاولة تعيين قيمة ، فإن المترجم منع هذا خطأ ترميز في تجميع نوع.

النظر في هذا:

 public void businessRule( SomeImportantArgument important )  {
      if( important.xyz() ){
          doXyz();
      }
      // some fuzzy logic here
      important = new NotSoImportant();
      // add for/if's/while etc 

     if( important.abc() ){ // <-- bug
         burnTheHouse();
     }
  } 

لنفترض أنك تسند إلى حل غامض بعض الشوائب التي من وقت لآخر يحرق البيت.

هل تعرف ما تضيع المعلمة تستخدم ما لا أفهمه هو لماذا على burnTHeHouse طريقة الاحتجاج إذا لم يتم استيفاء الشروط ( حسب النتائج )

تجعل يستغرق بعض الوقت لمعرفة ما أن في بعض نقطة في الوسط ، somone تغيير المرجع الذي تستخدمه أخرى الكائن.

باستخدام final تساعد على منع هذا النوع من الأشياء.

LooseCoupling:تجنب استخدام تنفيذ أنواع مثل 'LinkedList';استخدام واجهة بدلا من ذلك

لو كنت أعرف أن أنا على وجه التحديد بحاجة إلى LinkedList, فلماذا لا تستخدم واحدة لجعل نواياي صراحة واضحة إلى المستقبل المطورين ؟ انه شيء واحد للعودة إلى فئة أعلى حتى الصف مسار منطقي ولكن لماذا لا تعلن بلدي المتغيرات أن تكون من أدق معنى ؟

لا يوجد فرق في هذه الحالة.أعتقد أنه منذ كنت لا تستخدم LinkedList وظيفة محددة اقتراح عادل.

اليوم LinkedList يمكن أن يكون معقولا ، ولكن باستخدام واجهة يمكنك مساعدة نفسك ( أو غيرها ) إلى تغيير ذلك بسهولة عندما متعود.

الصغيرة, المشاريع الشخصية هذا لا معنى له على الإطلاق, ولكن منذ كنت تستخدم محلل بالفعل, أعتقد أنك تهتم رمز الجودة بالفعل.

كما يساعد على أقل خبرة المطور لخلق عادات جيدة.[ أنا لا أقول أنك واحد ولكن محلل لا يعرف لك ;) ]

AvoidSynchronizedAtMethodLevel:استخدام مستوى كتلة بدلا من الأسلوب المستوى تزامن

ما هي مزايا على مستوى الكتلة تزامن يكون على مستوى طريقة التزامن ؟

أصغر متزامنة القسم أفضل.هذا هو.

أيضا, إذا كنت مزامنة في طريقة المستوى سوف كتلة الكائن بأكمله.عند مزامنة على مستوى الكتلة ، يمكنك فقط مزامنة محددة القسم, في بعض الحالات وهذا ما تحتاجه.

AvoidUsingShortType:لا تستخدم قصيرة نوع

أول لغات C و C++ ، ولكن في جافا العالم, لماذا لا يجب استخدام نوع التي تصف البيانات الخاصة بي ؟

لم أسمع هذا وأنا أتفق معك :) انا لم استخدم قصيرة على الرغم من.

تخميني هو أن لا يستخدم ذلك ، عليك أن تساعد نفسك على الترقية إلى int بسلاسة.

رمز الروائح أكثر توجها إلى رمز الجودة من تحسينات الأداء.لذلك نصيحة تعطى لأقل من المبرمجين ذوي الخبرة وتجنب المزالق ، من أجل تحسين برنامج السرعة.

وبهذه الطريقة ، يمكن أن يوفر الكثير من الوقت والإحباط عند محاولة تغيير التعليمات البرمجية لتناسب أفضل تصميم.

إذا كانت المشورة لا معنى له, تجاهلها, تذكر أنك المطور في تهمة ، و أداة هو مجرد أداة.إذا كان هناك شيء يذهب على نحو خاطئ, لا يمكنك إلقاء اللوم على أداة, صحيح ؟

مجرد ملاحظة على final السؤال.

وضع "النهائي" على متغير النتائج في ذلك إلا أن يكون احالة مرة واحدة.هذا لا يعني بالضرورة أنه هو أسهل في الكتابة ، ولكنه بالتأكيد يعني أنه من الأسهل أن قراءة المستقبل المشرف.

يرجى النظر في هذه النقاط:

  • أي متغير مع final يمكن على الفور تصنيف "لن تتغير قيمتها أثناء مشاهدة".
  • ضمنيا يعني أنه إذا كان كل المتغيرات التي لن تتغير يتم وضع علامة مع النهائي ، ثم متغيرات لم يتم وضع علامة مع النهائي في الواقع سوف يتغير.

هذا يعني أنك يمكن أن نرى بالفعل عند القراءة من خلال تحديد الجزء الذي متغيرات البحث ، كما أنها قد تتغير القيمة خلال الرمز ، معيل يمكن أن تنفق له/لها جهود أفضل قانون هو أكثر قابلية للقراءة.

<اقتباس فقرة>   

ولن تحديد كائن لاغية   مساعدة في جمع القمامة، وإذا كان   الكائن هو كائن محلي (لا تستخدم   خارج طريقة)؟ أو هو أن   أسطورة؟

والشيء الوحيد الذي يفعله هو جعل من الممكن للكائن أن GCD قبل نهاية هذا الأسلوب، وهو أمر نادرا ما لزم الأمر من أي وقت مضى.

<اقتباس فقرة>   

هل هناك أي مزايا لاستخدام معلمات النهائية والمتغيرات؟

ويجعل رمز أكثر وضوحا إلى حد ما منذ لم يكن لديك ما يدعو للقلق حول قيمة يتم تغييرها سمور عند تحليل التعليمات البرمجية. في كثير من الأحيان ثم لا لا تحتاج أو تريد تغيير قيمة متغير مرة واحدة تم ضبطه على أي حال.

<اقتباس فقرة>   

إذا وأنا أعلم أنني على وجه التحديد بحاجة إلى   قائمة متصلة، لماذا لم أكن استخدام واحد ل   جعل نواياي واضحة صراحة   المطورين في المستقبل؟

هل يمكنك التفكير في أي سبب لماذا كنت في حاجة على وجه التحديد قائمة متصلة؟

<اقتباس فقرة>   

وانه شيء واحد ل   عودة الفئة التي هو أعلى حتى   مسار الفئة التي من المنطقي، ولكن لماذا   وأود أن لا بتعريف المتغيرات أن أكون   من بأضيق معنى؟

وأنا لا أهتم كثيرا حول المتغيرات المحلية أو الحقول، ولكن إذا قمت بتعريف معلمة أسلوب من نوع LinkedList، وسوف تعقب أنت إلى أسفل ويصب عليك، لأنه يجعل من المستحيل بالنسبة لي أن استخدام أشياء مثل Arrays.asList() وCollections.emptyList().

<اقتباس فقرة>   

ما هي المزايا التي تزامن مستوى الكتلة لديها على التزامن على مستوى الأسلوب؟

وأكبر واحد هو أنه يتيح لك استخدام كائن جهاز مخصص بحيث فقط تلك الأجزاء الهامة هي متنافية التي يجب أن تكون، بدلا من كل شيء باستخدام جهاز العرض نفسه.

<اقتباس فقرة>   

وفي العالم جافا، فلماذا لا   استخدام النوع الذي يصف قصارى جهدي   البيانات؟

ولأن أنواع أصغر من كثافة يتم الترويج automtically لكثافة العمليات لجميع الحسابات وعليك أن ننزل لتعيين أي شيء لهم. وهذا يؤدي إلى رمز تشوش والكثير جدا من confustion (وخصوصا عندما يتعلق الأمر autoboxing).

AvoidUsingShortType:لا تستخدم قصيرة نوع

  • قائمة البند

    باختصار هو 16 بت ، 2 مجاملة في جافا

  • قصيرة mathmatical operaion مع أي شيء في صحيح الأسرة خارج قصيرة أخرى سوف تتطلب وقت التوقيع على تمديد التحويل إلى حجم أكبر.تعمل ضد النقطة العائمة يتطلب التوقيع على التمديد غير تافهة التحويل إلى IEEE-754.
  • لا يمكن العثور على دليل ، ولكن مع 32 بت أو 64 بت تسجيل, أنت لم تعد توفير 'تعليمات معالج' في بايت كود المستوى.أنت وقوف السيارات المدمجة في شبه مقطورة وقوف السيارات بقدر المعالج السجل المعنية.
  • إذا كان لديك هي الاستفادة المثلى من المشروع الخاص بك في رمز بايت مستوى رائع.فقط نجاح باهر.;P
  • أنا أوافق على الجانب تصميم تجاهل هذا pmd تحذير فقط تزن بدقة لوصف الكائن الخاص بك مع 'قصيرة' مقابل تكبدها أداء التحويلات.
  • في رأيي ، المتكبدة الأداء يضرب ضئيلة على معظم الأجهزة.تجاهل الخطأ.
<اقتباس فقرة>   

ما هي المزايا لا على مستوى الكتلة   تزامن يكون على مستوى طريقة   تزامن؟   مزامنة الأسلوب هو مثل قيام كتلة synchronize(getClass())، ويمنع كل فئة.

وربما كنت لا تريد أن

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top