Имя: Пароль:
1C
1С v8
Стиль написания кода
, , ,
0 В тылу врага
 
26.04.13
13:10
1. Плохо 38% (22)
2. Отлично 22% (13)
3. Пойдет 17% (10)
4. Мне пох 17% (10)
5. Хорошо 5% (3)
Всего мнений: 58

Что вы скажите о стиле кода:

Возврат Запрос.Выполнить().Выгрузить()[0].СуммаДолга;
217 Steel_Wheel
 
28.04.13
01:05
Ты копрокодер 80-го левела. Что и требовалось доказать
218 bolder
 
28.04.13
01:12
(217) вот нафлудил то..И все изза Гугла, вывел тебя на 7 Главу Соглашения, где Simple Statement )))
Вот, полюбился, документ Oracle:
<code>
public void updateCoffeeSales(HashMap<String, Integer> salesForWeek)
   throws SQLException {

   PreparedStatement updateSales = null;
   PreparedStatement updateTotal = null;

   String updateString =
       "update " + dbName + ".COFFEES " +
       "set SALES = ? where COF_NAME = ?";

   String updateStatement =
       "update " + dbName + ".COFFEES " +
       "set TOTAL = TOTAL + ? " +
       "where COF_NAME = ?";

   try {
       con.setAutoCommit(false);
       updateSales = con.prepareStatement(updateString);
       updateTotal = con.prepareStatement(updateStatement);

       for (Map.Entry<String, Integer> e : salesForWeek.entrySet()) {
           updateSales.setInt(1, e.getValue().intValue());
           updateSales.setString(2, e.getKey());
           updateSales.executeUpdate();
           updateTotal.setInt(1, e.getValue().intValue());
           updateTotal.setString(2, e.getKey());
           updateTotal.executeUpdate();
           con.commit();
       }
   } catch (SQLException e ) {
       JDBCTutorialUtilities.printSQLException(e);
       if (con != null) {
           try {
               System.err.print("Transaction is being rolled back");
               con.rollback();
           } catch(SQLException excep) {
               JDBCTutorialUtilities.printSQLException(excep);
           }
       }
   } finally {
       if (updateSales != null) {
           updateSales.close();
       }
       if (updateTotal != null) {
           updateTotal.close();
       }
       con.setAutoCommit(true);
   }
}
</code>
219 bolder
 
28.04.13
01:14
(217) надеюсь , насчет statement больше вопросов нет?Урыл тебя NS, урыл...
220 NS
 
28.04.13
01:20
(216)(217) Без комментариев. Хуже программиста словившего клина уж точно ничего на свете быть не может. А уж когда ему в голову взбрело что нельзя в одной строке два метода через точку использовать - это уж вообще полный алес.
dx = Point1.getX() - point2.getX();
У такого горе-программиста станет вдруг запрещенной конструкцией, и всё из-за неумения читать и вникать в написанное. Хоть бы сил хватило на код на сайте оракла посмотреть, где кругом и всюду несколько методов через точку, но и на это ума не хватает.
221 xReason
 
28.04.13
01:21
Попытка он же Try надо использовать только тогда, когда не может проверить значение стандартными средствами
222 NS
 
28.04.13
01:32
Это ссылка на tutorials по Java, азы, без знания которых - языка ты не знаешь.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
Statements are roughly equivalent to sentences in natural languages. A statement forms a complete unit of execution. The following types of expressions can be made into a statement by terminating the expression with a semicolon (;).
До точки с запятой. Один statement.
- Method invocations
statement в себя включает не вызов метода, а вызовЫ методов!
223 NS
 
28.04.13
01:40
А теперь смотрим (189)  Steel_Wheel:
Запрос.Выполнить() // statement 1
Выгрузить() // statement 2
[0].СуммаДолга; // stetement 3

- 10 лет говоришь? Как можно за десять лет не уяснить себе что такое оператор?! Жесть!
224 bolder
 
28.04.13
01:48
(221) Ну не скажи.Try широко используется, но не для чтения одного значения, а всего контекста:
public static void viewTable(Connection con, String dbName)
   throws SQLException {

   Statement stmt = null;
   String query =
       "select COF_NAME, SUP_ID, PRICE, " +
       "SALES, TOTAL " +
       "from " + dbName + ".COFFEES";

   try {
       stmt = con.createStatement();
       ResultSet rs = stmt.executeQuery(query);
       while (rs.next()) {
           String coffeeName = rs.getString("COF_NAME");
           int supplierID = rs.getInt("SUP_ID");
           float price = rs.getFloat("PRICE");
           int sales = rs.getInt("SALES");
           int total = rs.getInt("TOTAL");
           System.out.println(coffeeName + "\t" + supplierID +
                              "\t" + price + "\t" + sales +
                              "\t" + total);
       }
   } catch (SQLException e ) {
       JDBCTutorialUtilities.printSQLException(e);
   } finally {
       if (stmt != null) { stmt.close(); }
   }
}
225 xReason
 
28.04.13
01:53
(224) а это не выпадает из моего контекста.

НО в реальности, этот кусок кода надо переписывать

узкое место только в получение запроса(зактык будет в коннекшене), потом уже можно справиться стандартами методами
226 NS
 
28.04.13
01:58
(225) Это учебный пример oracle :)
http://docs.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html
227 NS
 
28.04.13
02:00
228 xReason
 
28.04.13
02:13
(226) Если Оракал написал, то на это молиться надо? К слову ваша Ява меня никогда не радовала своим стилем
229 xReason
 
28.04.13
02:15
Все зависит от задач, вам а если там будет таблица, где есть часть полей (а другую часть с дефолтом), то нужно вернуть данные или лучше вернуть ошибку?
230 Бывший адинэсник
 
28.04.13
02:28
(212)
>> Возврат Запрос.Выполнить().Выгрузить()[0].СуммаДолга;

>И что тут страшного?

в общем случае это усложняет отладку.
231 bolder
 
28.04.13
02:37
(230) Не усложняет, сумма получается гарантированно)), даже без захода в эту функцию, ее не нужно отлаживать.
232 Steel_Wheel
 
28.04.13
02:56
(226) Учебный для студентов 4-го курса. Это твой уровень.
(219) Не урыл. Он ведь сам не знает. Ты тоже не знаешь, наверное...
(226) И еще один пример студента 4-го курса из серии "Как стать нубом на Джаве"
NS, ты копрокодер 80-уровня потому что
а) не понимаешь разницы между продакшеном и туториалом -- поясню, ты ссылаешься на копрокод для новичков с 4-го курса
б) ты понимаешь, что на спец. форумах меня под твоим ником (читай, тебя) просто закопают -- я бы этому не мешал. Рейтинг -1000 на RSDN тебя бы порадовал
в) ты ремесленник 1-це, который никогда не выходил за рамки своей системы. То, что ты из ховна и пал.. извини, из желудей и спичек мастеришь для себя -- не имеет никакого отношения к реальной жизни

Dixi.
233 NS
 
28.04.13
03:00
(232) Совсем упоротый что-ли?
Тебе определение statement с сайта оракла дали, а ты всё-равно не въезжаешь чем оператор отличается от операции.
234 NS
 
28.04.13
03:03
Горе жава-недопрограммист.
Я то хоть успешно в чемпионатах по программированию выступаю. В пару википедий вписан. Причем никак не на 1С, а на нормальных языках. А тебе базовые сертификаты не получить по одной причине - ты даже основы програмирования, определение оператора не способен усвоить.
235 Steel_Wheel
 
28.04.13
03:06
(234) Я их все получил. А ты -- ссылку в студию, о "виликий" погромист.

И хватит слюной брызгать. Как спец -- твой потолок - junior coder. И ты себе это ставишь в достижение. Я просто ржу
236 Steel_Wheel
 
28.04.13
03:08
(233) Еще раз, пожалуйста.
В твоем определнии написано, что я прав и (0) надо разбивать на 3 строки.

Умник, ты сам себя опускаешь. И с каждым твоим пуокм -- все ниже и ниже
237 Steel_Wheel
 
28.04.13
03:09
NS, ты пукай, не стесняйся...

Но о тебе уже есть четкое представление: ты никогда не пойдешь на публичное обсуждение этого вопроса. Потому что ты тупо боишься, что твое решение сравняют с копрокодом (ты правильно боишься, хочу я тебе сказать -- это копрокод и есть)
238 NS
 
28.04.13
03:11
(236) Читай определение оракла - statement заканчивается точкой с запятой, и может в себя включать вызовы методов.
Одна точка с запятой - один statement.
return object.metod().metod().metod(); - это один оператор, один statement.
239 Steel_Wheel
 
28.04.13
03:11
Кстати, ты можешь иметь какие угодно "награды", если они уровня "Нограда града Забдыщинска в ....", то можешь ими просто подтереться. Котируются награды от MS, Oracle... что у тебя есть из них?
Ничего?
Вали лесом, стажер-копрокодер.
Изучи уже что-нибудь сложнее опы-Одина
240 Steel_Wheel
 
28.04.13
03:12
(238) Увы и ах. Ты не прав. И ты трус. Что мне тебе объяснять, стажер?
241 NS
 
28.04.13
03:13
(237) Любого, за один такой вопрос заминусуют по полной программе. Потому что видимо ты едиснтвенный в мире кто не отличает оператор от операции, и считаешь каждый вызов метода в выражении отдельным оператором. Главное даже читать не умеешь. Ссылку дали. На русскую википедию, на оракл - всё-равно не въезжаешь.
242 Steel_Wheel
 
28.04.13
03:13
NS, ты тут как "знотог" уже оборсался пятикратно. Может, стоит не вонять, или принять мое предложение о дуэли с арбитражем?
243 NS
 
28.04.13
03:14
(239) Придурок, читай внимательно - я в олимпиадах и чемпионатах участвую не на 1С.
244 Steel_Wheel
 
28.04.13
03:15
NS, я третий и последний раз бросаю тебе вызов: умолкни или пусть сообщество нас рассудит!
245 NS
 
28.04.13
03:16
(242) Ладно, с тобой всё понятно. Упорот в хлам, читать не умеешь. В ссылку с сайта оракла въехать не можешь, оператор от операции и метода тоже отличить не можешь. Если честно, я вообще не верю что ты что-либо в жизни на жаве написал.
246 Steel_Wheel
 
28.04.13
03:16
(248) Ну, что сказать NS.
Участие в 4 на школьных олимпиадах -- это круто и показатель какчества
247 NS
 
28.04.13
03:16
(244) Делай ветку под своим ником. Кто-же тебе запрещает? И дай на неё сюда ссылку.
248 Steel_Wheel
 
28.04.13
03:16
(245) NS, Извини ты нуб и опозорился
249 Steel_Wheel
 
28.04.13
03:17
Ты гуманитарий, скорее всего.
250 NS
 
28.04.13
03:17
(246) Чемпионат мира, Голландии, России - это не школьные олимпиады.
251 Steel_Wheel
 
28.04.13
03:17
(250) В чем? В зафейливании? Я верю. Охотно
252 Steel_Wheel
 
28.04.13
03:18
(250) Ну или в 1-це. Тоже верю. Там любое решение катит -- родных нет
253 NS
 
28.04.13
03:18
Интересно, когда и насколько тебя забанят?
254 NS
 
28.04.13
03:19
Чемпионат Голландии по 1С - звучит. :)
Пить меньше надо.
255 Steel_Wheel
 
28.04.13
03:20
(253) Если ты модератор, то это у тебя спрашивать надо. Судя по твоему ЧСВ лет на 10 бан будет
(254) Согласен, не пей столько. А "Чемпионат Голландии по 1с" -- это звучит
256 NS
 
28.04.13
03:20
Statements

Statements are roughly equivalent to sentences in natural languages. A statement forms a complete unit of execution. The following types of expressions can be made into a statement by terminating the expression with a semicolon (;).
•Assignment expressions
•Any use of ++ or --
•Method invocations
•Object creation expressions
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
Повторю ссылку с сайта оракла.
(255) обгадился неуч? Не знаешь что такое оператор? Как тебя на работу взяли?
257 Steel_Wheel
 
28.04.13
03:24
NS, я тебе скронейше напомню, что ты перешел на личности 100 постов назад....

Ты не смог ничего ответить по существу насчет различий operators и statements.

Ты говоришь, что ты велик, и что ты призер черт-знает-чего....

Короче, ты страдаешь дизлексией в самой острой форме. Ты шизофреник -- твоих лже-наград нет либо они не котируются

Ты не обучаем, ибо не приемлешь критику. Даже конструктивную


В общем, мой прогноз: дорабатывай на своем заводике спецом по учету, а потом иди на пенсию. Чтобы твой код никто не видел
258 NS
 
28.04.13
03:25
statement - переводится русским словом Оператор.
operator - переводится русским словом операция.
Тебе ссылку на википедию дали, неуч.
259 Steel_Wheel
 
28.04.13
03:25
(256) Кстати, своей ссылкой ты сам себя "обгадил" =)
260 NS
 
28.04.13
03:28
wiki:Операция_(программирование)
Английское слово operator, соответствующее термину «операция», иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement[1]. Путаница усугубилась тем, что в C присваивание и инкремент/декремент являются и операторами, и операциями.
(259) В смысле? Там прямым английским языком сказано что statement - это полное выражение, до точки с запятой. Ты же утверждал, что несколько методов в выражении, это отдельные statement. А я кончено обгадился, тем что с таким неучем как ты общаться в принципе начал.
261 Steel_Wheel
 
28.04.13
03:28
1) The following types of expressions can be made into a statement by terminating the expression with a semicolon (;).

   Assignment expressions
   Any use of ++ or --
   Method invocations
   Object creation expressions
2) 7.1 Simple Statements

Each line should contain at most one statement.

Ты умеешь читать: в твоей ссылке statement -- это любое обращение к методу. В (0) их аж 3. А по Соглашению, их надо делить на строки
262 Steel_Wheel
 
28.04.13
03:29
В общем NS нуб и опозорился )))))
263 Steel_Wheel
 
28.04.13
03:30
(260) Вот, ты нек учишь английский, и из правильных текстов делаешь фиг знает пойми какие выводы. А я с этим 10 лет работаю
264 NS
 
28.04.13
03:31
(261) Ты идиот? В моей ссылке написано что statement это аналог предложения, и продолжается до ";"
И может включать в себе кучу всего, в том числе и вызовы методов. Ты по-английски вообще читать умеешь?
265 NS
 
28.04.13
03:32
Statements are roughly equivalent to sentences in natural languages. A statement forms a complete unit of execution. The following types of expressions can be made into a statement by terminating the expression with a semicolon (;).
266 Steel_Wheel
 
28.04.13
03:33
(264) Пожалуйста, переведи фразу
Method invocations
Это фраза про то, где заканчивается ОДИН STATEMENT

Я не буду тебе помогать, найми уже репетитора,о Вилихий
267 Steel_Wheel
 
28.04.13
03:33
в (0) 3 Method Invocation...

NS, ты нуб и опозорился уже в 8-ой раз
268 Steel_Wheel
 
28.04.13
03:34
Из-за уважения к твоим седым патлам, я бы предпочел не разивать тему до абсурда
269 NS
 
28.04.13
03:34
Вызовы методов это переводится. И это перечисление того, что может в себя включать statement.
270 Steel_Wheel
 
28.04.13
03:35
А еще, есть соглашение "трех точек"......
271 Steel_Wheel
 
28.04.13
03:35
(269) Замечательно!!!!!!
Что такое метод?
272 Steel_Wheel
 
28.04.13
03:35
Запрос.Выполнить() -- это метод
273 Steel_Wheel
 
28.04.13
03:36
РезультатЗапроса.Выгрузить() -- это тоже метод
274 NS
 
28.04.13
03:36
(271) Ты больной? В этой фразе написано что stement включается в себя ваыражение, которое заканчивается точкой с запятой, которое может включать в себя вызовы методов.
Вызовы, сколько угодно вызовов до точки с запятой - это один оператор.
275 Steel_Wheel
 
28.04.13
03:37
РезультатЗапрос[0].СуммаДолга -- уже не метод
276 NS
 
28.04.13
03:37
(272) Поздравляю! Ты наконец понял что это метод! А не оператор.
277 NS
 
28.04.13
03:38
Всё что идет до точки с запятой в выражении - это один оператор. Одно предложение, один statement.
278 Steel_Wheel
 
28.04.13
03:38
(277) Epic Fail
279 Steel_Wheel
 
28.04.13
03:39
Когда ты уже прочитаешь Code Conventions?
280 NS
 
28.04.13
03:40
(279) Я то давно прочел. Ты прочитать не в состоянии, так как у тебя даже унарные операции превратились в оператор, и должны выводиться каждая в отдельной строке.
281 Steel_Wheel
 
28.04.13
03:41
(276) Я уже 150 постов  тебе толкую, но до тебя не доходит.. Ты не в области Искуственного Интеллекта имеешь награды?
(274) Это все твоя больная фантазия.
282 NS
 
28.04.13
03:41
Statements are roughly equivalent to sentences in natural languages. A statement forms a complete unit of execution. The following types of expressions can be made into a statement by terminating the expression with a semicolon (;).
Это цитата с сайта оракла.
283 NS
 
28.04.13
03:42
Операторы примерно эквивалентны предложениям на естественных языках. Оператор формирует полную единицу выполнения. Следующие типы выражений могут быть превращены в оператор, заканчивая выражение с точкой с запятой (;).
284 Steel_Wheel
 
28.04.13
03:43
(282) Еще раз (261) прочти.
Ты противоречишь сам себе
285 NS
 
28.04.13
03:44
оператор - естественно в оригинале statement.
Любое выражение ты можешь превратить в оператор, завершив его точкой с запятой.
выражение может включать в себе вызовы методов.
286 Steel_Wheel
 
28.04.13
03:44
(283) Ну, ты же понел: могут быть, а могут и не быть. Второй случай -- это твой..

Какой же ты деревяннй
287 NS
 
28.04.13
03:45
(284) Дальше перечисляется что может входить в выражение. Как я могу противоречить сам себе - просто скопировав законченный текст с сайта оракла?
288 Steel_Wheel
 
28.04.13
03:45
(285) Это косяк перевода ))))))))))))))))))))
289 Steel_Wheel
 
28.04.13
03:45
гугл тебе это не переведет ))
290 NS
 
28.04.13
03:45
(286) Да, в опреторе может и не быть вызовов методов.
Но пока нет точки с запятой - оператор не закончился. Это один оператор. На чистом английском языке вроде написано.
291 Steel_Wheel
 
28.04.13
03:46
там не "может", а "есть" -- разницу видишь, ленхфист?
292 NS
 
28.04.13
03:47
(288) Объясни, каким образом ты умудрился десять лет числиться программистом, не зная что такое statement?
293 Steel_Wheel
 
28.04.13
03:47
(290) оператор -- вызов метода. По твоим же данным. Все.
294 Steel_Wheel
 
28.04.13
03:48
(292) Да просто ты живешьв своем мирке, копрокодер. Делаешь никому не нужные вещи. Участвуешь в ничего не значащих конкурсах
295 NS
 
28.04.13
03:48
Путая операцию с оператором, и считаю что каждая операция должна писаться на отдельной строке? Это ведь просто анекдот. Тебя на баш нужно, а не банить. Где Семен Семеныч?
296 NS
 
28.04.13
03:49
(293) Клиника. До свидания, а то я наберусь от тебя опилок в голову, и таким-же как ты стану.
297 Steel_Wheel
 
28.04.13
03:52
(295) (296) Ты слился 200 постов назад.
Кстати, я тебя поздравляю: я озвучу твое мнение под твоим ником на форуме нормальных специалисов, а потом просто буду копировать твои реплики отсюда. Я пропиарю тебя и ты станешь УЗНАВАЕМЫМ


А если серьезно, то ты НИКТО c завышенным ЧСВ.

Вот, скажи, например: что ты делал серьезнее закрытия месяца? Ничего? Я так и думал
298 NS
 
28.04.13
04:12
(297) Закрытие месяца на Java? Круто.
Вообще-то я написал одну из сильнейших в мире шашечных программ
http://tinyurl.com/WorldChessChampionship4AI-2008
Где-то третью по силе в России на момент написания шахматную программу.
http://chessprogramming.wikispaces.com/search/view/Nefedov
Был на первом месте среди тысяч участников в Russian AI code cup, отыграл на первом месте несколько первых этапов codecup.nl - открытый чемпионат Голландии по AI программированию.
http://www.codecup.nl/competitionlist.php

А ты путаешь оператор с операцией, и считаешь что каждую операцию следует писать в отдельной строке :)
299 NS
 
28.04.13
04:19
http://chessprogramming.wikispaces.com/CCCCISC+2008
Занял седьмое место своей шахматной программой в чемпионате СНГ.
Выиграл чемпионат Ленинграда по программированию среди школьников 89/90-го учебного года.
300 NS
 
28.04.13
04:22
(297) А ты всё продолжаешь путать операцию с оператором, и даже не в состоянии прочитать соглашение оракла, ибо считаешь метод - оператором. Как последний нуб :)
301 Туц
 
28.04.13
08:37
Палка о двух концах. Где-то хорошо, где-то плохо.

Мне пох
302 tararam
 
28.04.13
09:32
(224) в яве try используется где надо, и где не надо (в вашем примере не хватает еще нескольких). Ваш пример какой-то студенческий. кому вы собираетесь делать систем.аут.принтлн? консольке? волшебник вообще с попыткой отмочил (может с бодуна): в 1С попытки не работают, это проверено уже миллирад раз.
303 Бывший адинэсник
 
28.04.13
09:36
(231) я сказал в общем случае а не в частности.
304 tararam
 
28.04.13
09:43
(0) а вообше код имеет право на жизнь. как правило, ядро прогаммы пишется под конкретую СУБД с конкретными таблицами. т.е. дефакто, данные поля существуют. поэтому не парься.
305 YV
 
28.04.13
10:20
(0) Считаю что пойдет, но только в том случае, если в результате запроса гарантированно будет минимум одна строка. Иначе это просто быдлокод.

Пойдет
306 Hans
 
28.04.13
10:52
Код из нуля считаю нормальным.

А вот пример того кода который мне не нравится:
Попытка
  Возврат Запрос.Выполнить().Выгрузить()[0].СуммаДолга;
Исключение
  Возврат 0;
КонецПопытки

Не люблю когда много выходов из функции.

Пойдет
307 Wern
 
28.04.13
10:59
(302) Интересно это где попытка не работает? Сколько пользовался всегда и везде отрабатывала как положено.
308 tararam
 
28.04.13
11:14
(307) мдяяяя... No comments.
309 SoulPower
 
28.04.13
11:32
Из результатов голосовалки мне наконец стало понятно откуда такое нехорошее мнение об одинэсниках в сфере программистов.

Отлично
310 vde69
 
28.04.13
11:36
как вариант

Результат = Запрос.Выполнить().Выгрузить().Итог("СуммаДолга");
Возврат Результат;
311 vde69
 
28.04.13
11:40
вообще считаю хорошим тоном для функций должно соблюдатся 2 правила

1. Возврат всегда один и всегда самым последним оператором
2. возвращаемый результат лежит в отдельной переменной
312 tararam
 
28.04.13
11:48
(311) ну наконец-то нрамотный пост. меня, допустим, вырубают возвраты прямо из тела цикла (типовые, кстати, этим очень грешат. ну сделай ты переменную с флагом успешного прохождения цикла, собери все ошибки и выдай. так нет же, глНеПроводитьДокумент под каждым кустом. Руки повыдергивать за такое)
313 pavig
 
28.04.13
12:10
(92) тоже так делаю.
(0) - плохо.

Плохо
314 pavig
 
28.04.13
12:12
(312) если нет никаких сложностей в функции, то почему бы не воспользоваться Возвратом хоть откуда? ускоряет разработку, не усложняет чтение кода...
согласен конечно если функция сложная и возвраты не читаются - тогда - Да, согласен полностью.
315 _Atilla
 
30.04.13
23:02
(300) Тот, кто дает упрямцу совет, сам нуждается в совете. :-)
316 Джордж Вашингтон
 
01.05.13
02:20
Когда-то писал софт, где одной из главных переменных было "подлетное время"... Здесь же: работает или нет...

Отлично