Нет никакого правильного ответа.
Для неофициальных оценок, я использую туалет-l.
, Если бы я должен был измерить что-то строго, я измерил бы исполняемые операторы. В значительной степени, что-либо с разделителем оператора (обычно точка с запятой), или заканчивающийся блоком. Для составных операторов я считал бы каждый подоператор.
Так:
int i = 7; # one statement terminator; one (1) statement
if (r == 9) # count the if as one (1) statement
output("Yes"); # one statement terminator; one (1) statement; total (2) for the if
while (n <= 14) { # count the while as one (1) statement
output("n = ", n); # one statement terminator; one (1) statement
do_something(); # one statement terminator; one (1) statement
n++ # count this one, one statement (1), even though it doesn't need a statement terminator in some languages
} # brace doesn't count; total (4) for the while
, Если бы я делал его в Схеме или Lisp, я считал бы выражения.
, Поскольку другие сказали, что имеет значение, больше всего то, что Ваше количество последовательно. Также имеет значение, для чего Вы используете это. Если Вы просто хотите сообщить потенциально новому найму, насколько большой Ваш проект, используйте туалет-l. Если Вы желаете сделать планирование и оценку, то Вы могли бы хотеть стать более формальными. Вы не должны ни при каких обстоятельствах использовать LOC для базирования компенсации программиста на.
Мне было интересно, есть ли способ другое размещение информации, которая генерируется программой между запусками программы?
Просто используйте ObjectOutputStream
, чтобы сериализовать его в файл, и ObjectInputStream
, чтобы вернуть его.
Также есть ли способ сделать это, чтобы сохранить информацию в безопасности? от конечный пользователь может получить к нему доступ?
Если код работает в системе конечного пользователя, тогда нет, нет никакого способа помешать им получить данные - это даже не стоит вашего времени, пытаясь как-то закодировать его, поскольку он легко подключить отладчик и проверять состояние программы во время ее работы. Как двоичный формат, сериализация Java не позволит пользователям, не имеющим технических знаний, его расшифровать, и это лучшее, на что можно надеяться.
Я никогда не использовал его сам, но думаю, что это то, для чего изначально был разработан JDK's java.util.prefs.Preferences .
Вы можете использовать Свойства для хранения информации. Если вы хотите сделать его безопасным, пропустите его через какой-то поток шифрования .
Вы можете использовать db4o для хранения данных. Это объектная база данных, поддерживающая шифрование.
Шифрование файлов или локальная база данных с паролем.
Возможно, вас заинтересует Quick'n'dirty персистентность для Java .
Некоторые предлагали использовать сериализацию. Помните, что сериализация имеет ряд недостатков.
Сериализация не очень подходит для длительного хранения.
Я бы посоветовал вместо этого используйте небольшую встроенную базу данных. (Встроенная база данных - это база данных, которая выполняется в том же процессе, что и ваша программа). Обратите внимание, что Sun Java включает Java DB , которая является версией Apache Derby. Там'
Лучшее, что можно использовать при запуске Java, - это использовать ObjectOutputStream или текстовый файл. Когда у вас будет больше опыта, вы сможете использовать базы данных.
Как насчет сериализации?
Он не может быть прочитан пользователем, и это относительно просто.
XML как метод сериализации более устойчив к будущим изменениям в вашей программе, которые будут регулировать хранилище, чем двоичные форматы, такие как сериализация объектов. Однако это сделало бы его очень читаемым и изменяемым для большинства пользователей.
Очень простое сжатие / распаковка остановит почти всех пользователей от доступа к фактическому содержанию данных. Использование GZipInputStream / GZipOutputStream вокруг вашего текущего потока записи выполнит свою работу. Чем более тщательно вы будете защищены от постороннего вмешательства, тем сильнее это повлияет на пользователей вашего программного обеспечения.
Как говорили другие , существует множество способов сериализации данных. Вы можете использовать что-то легкое, например SQLite, или просто сериализацию. Просто поймите, что любые ваши попытки зашифровать данные могут быть проиграны. особенно в случае кода Java, поскольку его можно легко обратить.
Однако, если основная часть ваших пользователей недостаточно технических специалистов, чтобы понимать сложности обратного проектирования программы Java, чтобы выяснить, как расшифровать ваши данные, вам следует уметь обходиться некоторыми базовыми методами шифрования, такими как то, что было упомянуто в другом ответе, и быть хорошим. Просто поймите, что в любое время, когда что-либо находится на машине, которую вы не контролируете, невозможно помешать наиболее настойчивым пользователям выяснить, как это взломать.
Я лично предлагаю использовать sqlite и использовать простое шифрование данных. вы вводите поля, поэтому, если кто-то достаточно умен, чтобы иметь возможность подключиться к локальному файлу БД, он все равно должен каким-то образом изменить ваш алгоритм шифрования. 99,9% обычных пользователей не станут беспокоиться о таком уровне расследования.