1. Java / Говнокод #12369

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    if(elementNode != null) {
    	//attachGrowingEffectAnimation(elementNode);
    	String shadowMode = elementNode.getUserData(JMEScene3D.SHADOW_MODE);
    	if(shadowMode != null) {
    		if(shadowMode.equals(JMEScene3D.SHADOW_MODE_RECEIVE)) {
    			shadowNodesMap.put(ShadowMode.Receive, elementNode);
    		}
    	}
    	
    	if(elementNode != null) {
    		pyElementsNode.attachChild(elementNode);
    	}
    }

    Ну правда, а вдруг сам по себе станет не null?

    Запостил: someone, 27 Декабря 2012

    Комментарии (13) RSS

    • shadowMode.equals может быть с побочным эффектом.
      Ответить
      • А я бы ожидал подвоха в следующей строке.
        Ответить
        • Если говорить серъезно, то там закомментирован кусок.
          //attachGrowingEffectAnimation(elementNode );
          Ответить
          • Этот закомментированный кусок всё равно не может устанавливать переменную в null.
            Ответить
            • Ну а если его раскомментировать то сможет. Ваш КЭП
              Ответить
              • public class NullPointerTest {
                
                    private void attachGrowingEffectAnimation(String elementNode) {
                        elementNode = null;
                    }
                    
                    @Test
                    public void testNullIsNotSetInsideFunction() throws Exception {
                        String elementNode = "non-null";
                        attachGrowingEffectAnimation(elementNode);
                        assertNotNull(elementNode);
                    }
                }

                отрабатывает успешно.
                То есть, таки не сможет
                Ответить
                • А если elementNode это член, а не локальная переменная - то сможет: https://ideone.com/xjoyYB
                  Ответить
                  • Ну, да… Я не учёл, что контекст тоже вполне может оказаться говнокодом
                    public class NullPointerTest {
                        
                        private String elementNode;
                    
                        private void attachGrowingEffectAnimation(String elementNode) {
                            this.elementNode = null;
                        }
                        
                        @Test
                        public void testNullIsSetInsideFunction() throws Exception {
                            elementNode = "non-null";
                            attachGrowingEffectAnimation(elementNode);
                            assertNull(elementNode);
                        }
                    }
                    Ответить
                    • Кстати, а кто-нибудь в курсе, поддерживает ли ideone JUnit?
                      Ответить
                  • И, кстати, этот пример (https://ideone.com/xjoyYB) как раз не показывает возможности обnullения elementNode.
                    Ответить
                    • Ну да, я второпях this забыл, и занулил аргумент вместо члена, а на результат даже не посмотрел ;(
                      И на старуху бывает проруха.
                      Ответить
      • почему?
        Ответить

    Добавить комментарий