Uma forma de compartilhar projetos de IDEs - Stack Overflow em Português Meta
Não sei se isso já foi sugerido aqui, também não sei se alguém além de mim também tem essa dificuldade. Minha sugestão é uma forma para que programadores de determinadas linguagens possam estar compartilhando o projeto gerado pela IDE.
Em determinadas linguagens como as linguagens da família .net uma aplicação é formada por muito mais coisas que apenas o código escrito pelo programador, muita coisa é gerada automaticamente, muitos arquivos e códigos. E esse conteúdo gerado automaticamente faz um diferença enorme na hora de conseguir ajuda para alguma dúvida ou algum problema. E postar o código de todos os arquivos que compõem um projeto é impraticável. Se a pessoa que tenta ajudar pudesse ter acesso ao projeto pouparia muitas horas de comentários para tentar entender o cenário antes de fornecer uma resposta. É certo que existem várias formas que se pode publicar um projeto, usando outras ferramentas de compartilhamento de código como o GitHub ou mesmo através de um disco virtual (OneDrive, GoogleDrive, etc.). Tentei fazer isso em uma pergunta na versão em inglês do stack, mas a pergunta sofreu muitos down votos alegando que se tratava de code-review que não é o foco do site. Outro problema de se usar discos virtuais é que o conteúdo anexado a pergunta ficara dependente da disponibilidade do autor da pergunta, que pode no futuro excluir o conteúdo.
editada 29/09/16 às 20:33
2.12144 medalhas de prata22 medalhas de bronze
-7 ? É isso mesmo, moderação ? – Diego Souza 28/09/16 às 12:50
@Gumball qual é o problema dos -7? Agora -8. – Jorge B. 28/09/16 às 16:03
Não tem motivos. – Diego Souza 28/09/16 às 16:05
kkkkkkkk, pois é parece que odiaram, rsrsrsrs. Mas eu criei a sugestão sabendo que seria recusada. Se obter consenso fosse fácil, todo o resto na vida também seria, rsrsrs. Mas isso são coisas que eu levo na esportiva, já são -8 e tenho certeza que ainda será mas, kkkkkkk. Mas o que isso muda na minha vida não é mesmo? Eu tento adequar minhas participações as regras do site apenas para que fique "agradável" aos olhos de quem lerá. Nunca participo visando pontos ou reconhecimento virtuais, apenas para obter ajuda e pelo prazer de ajudar. – Matheus Saraiva 29/09/16 às 15:35
@MatheusSaraiva o motivo dos negativos talvez seja discordância, acho que a maioria discorda deste recurso, eu vejo isso como algo normal. De qualquer forma, você teve uma boa atitude em dar sua sugestão e eu vejo isso como algo positivo :) – gato 29/09/16 às 20:29
Boa noite Matheus, a questão não é regras do site, a questão é o foco do site, imagine assim, se você colocasse todo seu projeto para que a pessoa tivesse que baixar e analisar seria inviável, isto porque cada um programa a sua maneira, além de você explicar o lugar que falha ainda teria que explicar o código todo e como fazer ele rodar/executar/compilar, o foco do site é perguntar e responder e não sobre projetos específicos, fazer uma pergunta focada em um repositório de nada ajudaria outros visitantes, isso deixaria de ser um Q&A para se tornar um site de suporte... – Guilherme Nascimento 30/09/16 às 0:53
... Espero que entenda que eu não disse que você quer um site de suporte, o que eu disse é que o tipo de compartilhamento de código o tornaria isto e como eu disse nada tem haver com regras e sim com o foco do site, que é tornar uma pergunta útil a todos, inclusive futuros visitantes, o problema é que a maioria das pessoas chega achando que aqui o foco é obter ajuda exclusiva ou isto é um fórum, e não é, os sites da rede StackExchange foram idealizados assim, mudar seria o mesmo que querer que o "youtube" vire um "facebook" (por exemplo)... – Guilherme Nascimento 30/09/16 às 0:53
...A formula de sucesso dos sites da SE é isto Q&A objetivos, com foco e formato, orientado a ajudar e tornar o conteúdo útil para a comunidade. O que acho que falta é as pessoas entenderem a comunidade. Outra coisa não entenda os negativos como "odiaram" ou "recusaram", no meta os downvotes servem para dizer algo como "não concordo", isto porque a sua sugestão não tem sentido para como funciona o site. Não me leve a mal, sua sugestão não é de todo mal, mas ela tornaria as coisas mais "suporter" do que Q&A. – Guilherme Nascimento 30/09/16 às 0:55
Se incomodar com negativos no meta não faz sentido algum, primeiro que não afeta a reputação no site principal, segundo que sua finalidade é completamente diferente, aqui, acredito eu, a função do negativo é expor se a pessoa concorda ou não com aquilo que é sugerido(no caso de funcionalidade nova). Não quer dizer que sua sugestão é ruim ou não é útil, mas sim que 8 pessoas acharam que ela não agregaria muito. – user28595 30/09/16 às 11:12
Exatamente, postar todos os arquivos é impraticável. Nunca faça isso.
O correto é fazer um exemplo mínimo, completo e verificável (se as pessoas fizessem mais isso, aprenderiam desenvolver melhor, não só pela experiência, mas acostumariam fazer as coisas mais isoladas e independentes e testáveis). Se possível algo compilável de forma simples e sem dependência. Idealmente as perguntas deveriam conter esse exemplo online. O SO tem algo pronto para JavaScript (ícone no editor do lado da imagem). Podemos usar outros como:
ideone (um dos mais usados)
CodingGround (mais variedade, bem completo, e talvez o mais próximo do que deseja)
repl.it (um dos melhores hoje em dia)
Lua Demo.
Tem ainda o SharpLab e Compiler Explorer que não são bem para executar, mas muito úteis.
Se todo mundo aprendesse criar um exemplo auto contido e postado para facilitar a vida de quem vai ajudá-lo ficaria bem melhor porque mais pessoas se disporiam ajudar e teriam tempo para ajudar mais pessoas.
Obviamente não é proibido postar meio de qualquer jeito, mas pessoalmente considero um certo abuso de quem precisa de ajuda não facilitar para os demais. Eu acho que o usuário por um link que faça buscar qualquer coisa fora da pergunta é mau uso do site. Como informação extra, tudo bem, mas a pergunta tem que bastar por si só. O ideal é tudo na pergunta, e um fiddle para o respondedor poder testar e alterar facilmente.
Eu costumo responder como dá sempre que posso, mas muitas vezes não respondi porque jogaram um código e eu teria que analisar tudo para descobrir o que de fato é o problema. Hoje mesmo isso aconteceu umas 3 ou 4 vezes. Pode ser que outro se interesse, pode ser que as pessoas fiquem sem resposta.
Não é à toa que as pessoas que respondem mais capricham mais que as pessoas que perguntam. Se as pessoas que perguntam começassem caprichar mais elas evoluiriam mais e logo poderiam começar responder mais. A falta de evolução do programador quase sempre está ligado a atitude que ele tem. É preciso curiosidade, dedicação e um mínimo de capricho. A gente já falou aqui várias vezes que ninguém é obrigado saber, mas é muito chato ter que responder para quem não quer aprender de verdade.
O recurso não é útil
Jogar o projeto todo para alguém ver tende a indicar que a pergunta é muito ampla e talvez não clara e de uma certa forma foge do escopo do site. Quando alguém posta tudo e praticamente diz "se vira aí pra me ajudar" a tendência é os usuários não gostarem, parece consultoria online.
Não digo que o recurso não seja útil em um ou outro caso, onde o problema é justamente uma questão específica que precisa analisar o projeto (não pode ficar caçando o problema dentro do projeto). Mas quase sempre indicará que está usando o site do jeito errado.
Acho que por isso nunca pensaram em fazer e duvido que um dia tenha algo nesse sentido. Eu prefiro que se esforcem em coisas mais úteis.
Apesar de ser moderador eleito do site, esta resposta representa minha visão e não da comunidade como um todo (ainda que sei que tem apoio de várias pessoas, mas não todas, claro), tampouco da empresa que administra os sites.
editada 19/11/19 às 11:32
respondida 25/09/16 às 23:31
"mas é muito chato ter que responder para quem não quer aprender de verdade" é o que mais tenho sentido aqui no site, e um bocado por isso tendo a não responder a alguns tipos de perguntas. E normalmente são esse tipo de perguntas que têm mais atenção e mais votos. – Jorge B. 26/09/16 às 8:17
No fundo eu sempre soube que seria um recurso um tanto quanto esquisito. Mas já passei por situações onde eu fiz perguntas e dei explicações mais claras quanto eu podia, com exemplos e tudo e ainda assim eu não ficava claro para quem lia. Especificamente em .NET. os`Findlers são bem válidos, mas infelizmente eles são incapazes de reproduzir um cenário construído um uma IDE. Como citei na sugestão, tomando como exemplo o .NET, uma aplicação quase nunca é composta só de código escrito pelo programador, muita coisa é criada automaticamente e muitas vezes é nesse código que está o problema. – Matheus Saraiva 26/09/16 às 12:57
Eu não tenho esse tipo de problema ao buscar ajuda sobre python por exemplo. Pq python é mais fácil? Não, pq em python não tem IDE gerando código para você, todo o conteúdo foi você mesmo quem criou. – Matheus Saraiva 26/09/16 às 13:01
Nesses casos é altamente provável que a pergunta é muito ampla e deva ser fechada. Por isso que eu disse que precisa fazer um MCVE. Em 99,99% dos casos é possível fazer um e limitar o problema. A questão é aprender fazer as coisas sem depender do IDE. O IDE deve ser uma ajuda não uma complicação. E de fato não é o IDE o problema, é o desconhecimento em fazer o código sem ele. – Maniero♦ 26/09/16 às 13:04
Eu acredito que casos que dependam da IDE para testar sejam quase sempre fora de escopo, pq acabam sendo um nivel de complexidade de terceirização de serviço por falta de conhecimentos anteriores (candidato a programador queimando etapa), e não problema de programação. Em todo caso, se alguém puder apontar alguns casos de pergunta válida aqui do site que tenha dependido de IDE para resolver, eu agradeço, pq vai me ajudar a pensar melhor no assunto. – Bacco♦ 26/09/16 às 13:06
"E de fato não é o IDE o problema e o desconhecimento em fazer o código sem ele" Esse é o ponto, uma tecnologia com deficiências na documentação como .NET onde quase todo o material encontrado está atrelado ao uso do visual studio, onde nem tudo tem classes expostas se tornando uma verdadeira caixa preta. É uma tarefa árdua. Não tenho esse tipo de problema com tecnologias livres. Mas isso já está fora do contexto. – Matheus Saraiva 26/09/16 às 13:13
Eu não acho que isso ocorra de fato. Eu acho que o ocorre de fato é a pessoa achar que tudo depende do VS. Eu nem tenho o VS instalado aqui. Se tem uma tecnologia que não tem caixa preta é o .Net. Não sei bem outras coisas, mas eu tenho acesso a tudo no .Net, já tentei achar algumas coisas em outras linguagens e tive dificuldade. Não digo que não tenha, só que está mais escondido ou pelo menos eu apenas não tenha tanta intimidade com elas. Então o problema é falta de intimidade com o .Net. – Maniero♦ 26/09/16 às 13:18
@Bacco, já passei por situações onde o problema não estava no meu código mas sim no tipo de projeto que eu escolhi. Eu não lembrei de informar e quem tentou ajudar também não lembrou desse detalhe. Culpa de quem? Minha, mas são coisas que estão sujeitas a acontecer, afinal por trás de uma máquina tem alguém que pode falhar. Em fim, eu não estou defendendo a criação do recurso, eu já criei a postagem sabendo que não passaria. Mas valeu exemplificar como é mais complicado expor o seu cenário em determinadas tecnologias. – Matheus Saraiva 26/09/16 às 13:24
@MatheusSaraiva mas se tiver algum caso prático que eu consiga visualizar, agradeço. Tenho uma certa facilidade com abstrações, e tudo que eu consegui imaginar que dependesse da IDE se encaixou no que comentei anteriormente, mas eu acho possível que em dado momento alguém consiga me dar um exemplo em que faria sentido, apenas não aconteceu ainda. Se em algum momento esbarrar em um caso, peço que me avise, eu acho que os contrapontos são a melhor forma de revermos conceitos. É fácil eu sustentar o que eu já acredito, mas só sendo "contrariado" que eu realmente posso ter uma visão mais ampla. – Bacco♦ 26/09/16 às 13:30
@bigown, você tem razão, a falta de intimidade conta muito, e não tenho certeza se .NET realmente é tão caixa preta quanto eu penso. Mas é inegável que dentre as tecnologias em evidência .NET é a mais atrelada a uma IDE. Tudo é fácil quando você segue o caminho predeterminado, mas tente fazer algo "fora da caixa" você sentirá o efeito da documentação deficiente e falta de exemplos do que você pretende fazer. Em fim tenho interesse em .NET por todas as plataformas que ela abrange, pq realmente a MS entrega muita coisa ao dev. E não por sua bela doc ou seu magnífico desacoplamento. – Matheus Saraiva 26/09/16 às 13:38
Eu não sinto isso. Talvez porque eu nunca me prendi a IDE. – Maniero♦ 26/09/16 às 13:39
@bigown, você e eu então compartilhamos algo incomum que é o pouco gosto por IDEs, afinal, eu "nasci" no famigerado Clipper linguagem modo texto onde é só você e o editor. :) – Matheus Saraiva 26/09/16 às 13:50
Eu também e me orgulho disso. Na verdade até hoje trabalho com a evolução do Clipper. E o Clipper falta documentação ao extremo. Eu tive que fuçar muito internamente para entender como as coisas funcionam e não é nada fácil . O Harbour ajudou muito (por ser menos caixa preta, é open spource, mas a documentação é praticamente zero). O .Net tem tudo o que precisa na internet, tem muitas perguntas sobre o assunto aqui, tem muita gente pra perguntar e descobrir o quer ainda não conhece. Tem tudo open source e aberto para participação do comunidade no Github. O VS é a única coisa não é aberta. – Maniero♦ 26/09/16 às 13:52
@MatheusSaraiva claro que python "tem" IDE (exemplo o PyQT), só depende do ambiente que vai usar, nenhuma linguagem é dependente de uma IDE de verdade, linguanges são linguagens, o problema é que as pessoas são acostumadas ou ensinadas ao uso do IDE, veja meu caso eu aprendi um pouco de C# (para asp.net) sem nunca ter usado VisualStudio, a unica coisa que usei foi notepad e um servidor IISExpress (estava aprendendo asp.net), C e C++ aprendi a compilar por linha de comando, e HTML e CSS era só notepad e navegadores, tem muita gente que ainda pensa que HTML e CSS depende do DreamWeaver. – Guilherme Nascimento 26/09/16 às 21:12
@MatheusSaraiva se isso ocorre mesmo nesses fóruns devem estar cheios de pessoas que não são desenvolvedoras, devem ser religiosos. – Maniero♦ 27/09/16 às 15:29
Complementando o que o bigown disse, a solução é focar em deixar o exemplo da pergunta em algo mínimo, completo e verificável. Ou seja:
Mínimo: Tudo o que está na pergunta é necessário para reproduzir o problema. Nenhuma parte é supérflua.
Completo: Todas as partes relevantes para reproduzir o problema estão postados na pergunta.
Verificável: O que foi postado na pergunta é suficiente para reproduzir o problema.
Também convém dizer o que faz a sua pergunta não ser algo mínimo, completo e verificável:
Classes ou arquivos referenciados que não estão na pergunta (não é completo).
Classes ou arquivos postados apenas de forma parcial (não é completo).
Ao executar os procedimentos descritos na pergunta, o erro não acontece (não é verificável).
O conteúdo da pergunta não contém todas as informações necessárias para se reproduzir o problema (não é verificável).
Apenas o código, sem a descrição do problema (não é completo).
Ausência de código (não é completo e nem verificável).
Um monte de classes, arquivos, métodos ou etapas descritas que não têm relação com o problema (não é mínimo).
O código não compila, mas o problema não é o erro de compilação em questão (não é verificável).
O código utiliza bibliotecas ou funções que não estão especificadas ou descritas em lugar nenhum (não é completo e nem verificável).
Se o projeto depende de muita coisa gerada automaticamente, para tornar o seu exemplo mínimo, completo e verificável, você pode adicionar instruções de como gerar o projeto com todas as coisas que aparecem automaticamente. Por exemplo:
Criei um projeto Java Web padrão no Netbeans, incluindo o Hibernate como biblioteca, e coloquei no pacote com.example as classes que seguem abaixo.
Estou usando o Netbeans 8.0.1 com o Glassfish 4.1.1 e a JDK 1.8.0_102. A versão do Hibernate é a que o Netbeans acrescentou automaticamente como biblioteca no projeto.
Está ocorrendo o erro abaixo:
Stacktrace, mensagens de erro de compilação, saída do programa, etc.
Alguém sabe me explicar porque o erro ocorre? O que posso fazer para consertar?
Observe que neste exemplo, você:
Descreve o problema obtido.
Descreve quais são os passos exatos para reproduzir o problema.
Detalha quais são as versões necessárias para cada pacote/biblioteca/IDE/seja-lá-o-que-for.
Isso daí deixa o conteúdo da sua pergunta completo e verificável. Ou seja, ele contém todas as instruções necessárias para reproduzir o problema. Fazer o exemplo ser completo e verificável não é apenas despejar todo o código-fonte na questão, mas sim dizer o que deve-se fazer com tal código para reproduzir o problema.
Além de ser completo e verificável, é importante que ele seja mínimo. Não coloque na pergunta, coisas que não têm relação com o problema. Ou seja, retire tudo aquilo que você conseguir do seu projeto sem que ele deixe de ser completo e verificável. Quando você chegar em um ponto onde qualquer coisa que for retirada faria o seu projeto ou deixar de ser completo ou deixar de ser verificável, então é porque chegou ao ponto em que ele é mínimo.
Se grande parte do código é gerado automaticamente, então convém explicar quais são os passos para gerá-lo. Se ao invés disso, o autor da pergunta apenas despejar linhas e mais linhas desse código, poderá acabar confundindo ou dificultando o trabalho de quem for responder a pergunta, uma vez que a pergunta ficará com seu conteúdo inchado e poluído e quem for responder pode não perceber que o código foi gerado automaticamente, focando parte da sua atenção em partes sem importância. Colocar todo o código em algum arquivo ZIP em qualquer lugar da internet ao invés de colocar na pergunta não torna as coisas melhores. Observe que trocar um monte de código gerado automaticamente por uma simples descrição de como configurar o projeto é uma forma de deixar o seu exemplo mais mínimo.
Por fim, se o que você quer fazer demanda que as coisas geradas automaticamente precisem de uma configuração bem específica, daí você descreve como é que se faz essa configuração bem específica:
Abra o Netbeans (estou usando a versão 8.0.1 com a JDK 1.8.0_102).
Escolha a opção "Novo Projeto".
Escolha o item "Java Web".
Escolha a opção "Aplicação Web".
Dê o nome do projeto de "Teste" e coloque-o em alguma pasta qualquer.
25. Copie o arquivo meuteste.xml para a pasta xpto.
26. Compile o projeto.
27. Observe o erro que ocorre (stacktrace abaixo). Por que isso acontece? Como corrigir?
Entretanto, antes de postar coisas que demandem passos de configuração complexos, certifique-se que eles são estritamente necessários e que têm relação com o problema. Isso daí tem a ver com a parte do "mínimo": se você puder dispensar algumas etapas ou usar uma forma de configuração mais padrão e com menos configurações específicas, melhor.
Mas, se você descreveu todos os passos necessários para a reprodução do seu problema, incluindo como gerar automaticamente tudo que for necessário, deixou o conteúdo da sua pergunta mínimo, completo e verificável, e mesmo assim quiser deixar um link para o ZIP, então tudo bem. Neste caso o ZIP seria um acessório a mais para ajudar quem for responder, e não algo estritamente necessário na pergunta. Além disso, quem for responder poderia executar os passos descritos e comparar o resultado com o ZIP, podendo tirar conclusões interessantes tanto no caso de o resultado ser o mesmo quanto no caso de o resultado divergir.
Por fim, code review não está no escopo do StackOverflow em inglês mesmo, mas eles tem um site na rede exatamente com essa finalidade: http://codereview.stackexchange.com. Por outro lado, na nossa versão em português, o codereview é considerado como parte do escopo sim, embora tenhamos poucas questões desse tipo.
editada 4/10/16 às 15:19
respondida 4/10/16 às 15:12
Sempre quando eu crio o exemplo minimo para simular meu problema em um pequeno exemplo isolado e assim postar aqui no SOpt eu acabando resolvendo o problema antes de perguntar. É bem curioso como este método (exemplo minimo e verificável) nos ajuda a solucionar a maioria dos problemas :P – gato 4/10/16 às 18:35