Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=7028446&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 12:11:40 2016
Кодировка: Windows-1251
[lamer] автоматическое управление ресурсами в Java - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | показать все
botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 15:18
 

В ответ на:

Можно пример кода, плз?



code:
abstract class A { protected abstract void _do(); public void do() { try { // open resources _do(); } finally { // close resources } } }




Хватит дрочить на рейтинги
Alex
veteran

Рег.: 16.10.2002
Сообщений: 1940
Из: ЮЗАО
Рейтинг: 18
  Re: [lamer] автоматическое управление ресурсами в Java [re: _Ss_]
      25.12.2007 15:18
1

> 1. Александреску настоятельно рекомендует не делать конструкторов, кидающих исключений (есть вопрос по C++)
Ты точно уверен, что не путаешь с деструкторами? IMHO как раз рекомендуют (например, Страуструп) делать конструкторы с исключениями вместо init.

botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 15:20
 

В ответ на:

IMHO как раз рекомендуют (например, Страуструп) делать конструкторы с исключениями вместо init.




правда что ли?

ну тогда это одно из тех мест где идеалогии джавы и с++ различаются



Хватит дрочить на рейтинги
botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 15:24
 

В ответ на:

3) Как обстоит дело в других языках?




я все равно продолжаю настаивать что если ты используешь new/delete
то java и c++ тут равны
ну и остальные языки естессно тоже также





Хватит дрочить на рейтинги
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 15:25
 

Quote:

Как обстоит дело в других языках?



в C#
 
code:
using (File f = new File("myfile.txt")) { using(Connection c = new Connection (ip_address, port)) { do_smth(f, c); } }


исключения в конструкторе это не покрывает, но есть предположение, что файл не открывается в конструкторе.



not fluffing up the experience with features that will ultimately cause you a headache
Alex
veteran

Рег.: 16.10.2002
Сообщений: 1940
Из: ЮЗАО
Рейтинг: 18
  Re: [lamer] автоматическое управление ресурсами в Java [re: _Ss_]
      25.12.2007 15:25
 

ЖЭСТЬ!!! Неужели так пишут? Это же какой-то C получается:
code:
fd = open("myfile.txt", O_RDONLY); if (fd >= 0) { p = malloc(200); if (p) { free(p); } close(fd); }


_Ss_

Рег.: 21.11.2003
Сообщений: 4145
Рейтинг: 4662
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 15:28
 

В том-то и дело...
Код не очень читаем. Единственный плюс - отсутствие дублирования кода.
Хотя хз. Не использовал такие конструкции



Если сказанное мной может быть понято двояко, и первый
вариант тебя расстраивает, я имел ввиду второй
Alex
veteran

Рег.: 16.10.2002
Сообщений: 1940
Из: ЮЗАО
Рейтинг: 18
  Re: [lamer] автоматическое управление ресурсами в Java [re: botWi]
      25.12.2007 15:29
 

> правда что ли?


blind
still alive

Рег.: 16.01.2004
Сообщений: 23127
Из: Хамовники
Рейтинг: 16481
  Re: [lamer] автоматическое управление ресурсами в Java [re: Shurik]
      25.12.2007 15:31
 

using это такой syntax sugar для try finally?



13/37 =)
botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 15:33
 

ты привел явно не ту цитату
там не написано, что использовать исключения в конструкторе это хорошо
там лишь написано что вместо init() лучше использовать конструктор, а про исключения ни слова



Хватит дрочить на рейтинги
Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: [lamer] автоматическое управление ресурсами в Java [re: blind]
      25.12.2007 16:17
 

да, но он опирается на системный интрефей IDisposable. В Java такого интерфейса кажись нет.



not fluffing up the experience with features that will ultimately cause you a headache
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: [lamer] автоматическое управление ресурсами в Java [re: botWi]
      25.12.2007 18:04
4

Quote:

я все равно продолжаю настаивать что если ты используешь new/delete
то java и c++ тут равны



По этой теме я уже написал кучу постов. :) Си++ удобнее в плане работы с ресурсами, в этом он превосходит и Java, и даже C#. Что касается new и delete, то Java и Си++ равны до тех пор, пока ты не начал пользоваться деструкторами. Любой захват ресурса в Си++ идет через конструктор-деструктор, что спасает от любых проблем.

DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31411
Рейтинг: 8952
  Re: [lamer] автоматическое управление ресурсами в Java [re: Shurik]
      25.12.2007 18:32
 

code:
using (File f = new File("myfile.txt")) { using(Connection c = new Connection (ip_address, port)) { do_smth(f, c); } }


лучше так
code:
using (File f = new File("myfile.txt")) using(Connection c = new Connection (ip_address, port)) { do_smth(f, c); }



Shurik

Рег.: 27.09.2003
Сообщений: 13646
Рейтинг: 787
  Re: [lamer] автоматическое управление ресурсами в Java [re: DarkGray]
      25.12.2007 19:00
 

отличие только в скобочках?



not fluffing up the experience with features that will ultimately cause you a headache
burivuh
Carpal Tunnel

Рег.: 08.08.2004
Сообщений: 4452
Рейтинг: 1567
  Re: [lamer] автоматическое управление ресурсами в Java [re: Alex]
      25.12.2007 19:21
 

В ответ на:

PS. Как обстоит дело в других языках?



Ну, в питоне нет "new/delete", а синтаксический сахар, заменяющий try/finally в работе с ресурсами выглядит так:
code:
with file('file1') as f: do_with(f)

вложенность в однострочник не раскладывается, ну то есть можно попытаться сэмулировать что-то вроде
code:
with (file('file1') as f1, file('file2') as f2) : do_with(f1,f2)

на первый взгляд... и для этого нужно сильное "колдунство" с контекстом. Хотя, может и нельзя...



Послушай, иногда мужчинам... нужно уважение иметь лицо (с) Безымянный переводчик
DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31411
Рейтинг: 8952
  Re: [lamer] автоматическое управление ресурсами в Java [re: Shurik]
      26.12.2007 10:50
 

> отличие только в скобочках?

да )
 так лучше передается, что для выполняемого блока нужны оба ресурса

horror
гонобобель

Рег.: 30.09.2002
Сообщений: 3783
Рейтинг: 2135
  Re: [lamer] автоматическое управление ресурсами в Java [re: DarkGray]
      27.12.2007 09:52
 

Quote:

так лучше передается, что для выполняемого блока нужны оба ресурса



дело вкуса, конечно, но я позволю себе не согласиться :grin:
у меня ощущение, что первая строчка ошибочно расположена..возможно плохо закопи-пастили откуда-то код :grin:

Страницы: 0 | 20 | показать все

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в