Буквальное толкование будет работать на всех основных языках:
return (a ? 1:0) + (b ? 1:0) + (c ? 1:0) >= 2;
Но я бы, вероятно, упростил бы чтение для людей и увеличил бы его до более чем трех - что-то, что, похоже, забыто многими программистами :
boolean testBooleans(Array bools)
{
int minTrue = ceil(bools.length * .5);
int trueCount = 0;
for(int i = 0; i < bools.length; i++)
{
if(bools[i])
{
trueCount++;
}
}
return trueCount >= minTrue;
}
I've almost always gone with option #1. If you design it right you may only need your 'user' column in a few key tables that are your entry point and then everything else can be joined off of those key tables.
Как правило, вы почти никогда не захотите иметь несколько таблиц (или баз данных) с идентичными структурами. Если вы задумались о создании отдельных таблиц stuff_for_user_a
и stuff_for_user_b
(как звучат ваши варианты №2 и №3), то вы, вероятно, захотите просто создать таблица данных
, которая включает столбец пользователь
(т.е. ваш вариант №1).