Я думаю, что нет "Правильного ответа" на проблему, которую вы указали. Некоторые люди ставят Prime в Is, а некоторые в Math. Существует двусмысленность. В противном случае вы бы не задавали этот вопрос.
Теперь вы должны как-то разрешить неоднозначность. Вы можете подумать о некоторых правилах и соглашениях, которые бы сказали, какой класс / метод идет куда. Но это может быть хрупким, так как правила не всегда очевидны, и они могут стать очень сложными, и в этот момент они больше не помогают.
Я бы посоветовал вам спроектировать классы так, чтобы было понятно, посмотрев на имена, куда должен идти какой-либо метод.
Не называйте свой пакет проверки Is. Это настолько общее название, что почти все идет туда. IsFile, IsImage, IsLocked, IsAvailable, IsFull - плохо звучит, хорошо? Нет сплоченности с этим дизайном.
Вероятно, лучше сделать так, чтобы проверяющий компонент фильтровал данные на границе подсистем (где необходимо обеспечить соблюдение правил безопасности и бизнес-правил), и ничего больше.
После принятия этого решения ваш пример становится очевидным. Прайм принадлежит математике. Is :: Image, вероятно, слишком общий. Я бы предпочел Image :: IsValid, потому что у вас, вероятно, также будут другие методы, работающие с изображением (больше согласованности). В противном случае «Есть» становится сумкой для всего , как я сказал в начале.