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

    +111

    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
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    public class PmsUtil {
    	
    	public static boolean allowViewFolder(IFolder folder) {
    		return isIntersected(folder.getPermissions(), getUserPms());
    	}
    
    	private static Set<Permission> getUserPms() {
    		return LoginController.get().getUser().getRole().getPermissions();
    	}
    
    	private static boolean isIntersected(Set<Permission> pmsSetA, Set<Permission> pmsSetB) {
    		for(Permission pms : pmsSetB) {
    			if(pmsSetA.contains(pms)) {
    				return true;
    			}
    		}
    		return false;
    	}
    
    	
    }

    К слову об именах переменных... любил мой предшественник делать нестандартные сокращения.

    Запостил: someone, 26 Июля 2013

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

    • > LoginController.get().getUser().getRole( ).getPermissions();

      I smell tons of NPEs here.
      Ответить
      • Если приложение дошло до той точки, в которой эта функция может быть вызвана, то юзер гарантированно есть. А у юзера гарантированно есть роль. А у роли - permission'ы.
        Ответить
        • И кто помешает смелому junior'у выстрелить себе в ногу засунуть эту радость скажем в background-процесс?
          Ответить
          • Это GWT. Нет там background-процессов. Конкретно этот класс дёргается из гуи-компонента, который создаётся уже после того, как пользователь залогинился.
            Ответить
            • Ну т.к. метод у нас static, я склонен к пессимизму. Мало ли кто его где вызовет )
              Ответить
    • петросня
      Ответить
    • > getUserPms
      Почему возвращает не Date?
      Ответить
      • тогда уж org.joda.time.Period
        Ответить
        • Блин, надо все-таки по Йоде ман до конца дочитать. А то недавно заюзал 2 дейта в качестве периода ;)
          Ответить
          • По-моему, сейчас для новых проектов лучше уж threeten. С выходом Java 8 просто поменять везде пакет org.threeten.bp на java.time.
            Ответить

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